草庐IT

android - 分页库未向我的 PagedListAdapter 发送任何数据

coder 2023-12-07 原文

我有一个 Android 待办事项列表应用程序,其中包含使用 Room 访问的 SQLite 数据库。然后我想在抽屉导航中列出可用列表。所以我使用了分页库。现在 RecyclerView 是空的,我不知道为什么。顺便说一句:我的列表都不起作用。我是初学者,所以我坚持官方教程。我已经发现,他们错了,ViewModel需要一个空的构造函数。现在情况是这样的:成功调用设置适配器的方法 (8),ViewModel已创建 (7) Adapter已创建 (1),setList()方法被调用 (9),但没有 Holder正在创建 (4),否 onCreateViewHolderonBindViewHolder被称为 (2,3),没有 DiffCalback方法被调用 (5,6) 并且只显示一个空的 Recycler View 。 PagedList<SQLList>包含正确的信息,但没有信息被传递给适配器。有人知道为什么吗? //对不起我的英语。

适配器类:

//this is my Adapter. SQLList is my object (Equivalent to the User object in 
the tutorial)
public class ListsAdapter extends PagedListAdapter<SQLList,ListsAdapter.Holder> {
private Context context;

public ListsAdapter(Context context) {
//1
    super(DIFF_CALLBACK);
    this.context = context;
}

@Override
public Holder onCreateViewHolder(ViewGroup parent, int viewType) {
    //2
    LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View view = inflater.inflate(R.layout.list_item,null);
    return new Holder(view);
}

@Override
public void onBindViewHolder(Holder holder, int position) {
    //3
    SQLList item = getItem(position);
    if (item == null){
        holder.clear();
    }else {
        holder.bindTo(item);
    }
}




public static class Holder extends RecyclerView.ViewHolder {
    public TextView textView;
    public int id;
    public TextView idView;

    public Holder(View itemView) {
        //4
        super(itemView);
        textView = itemView.findViewById(R.id.textView);
        idView = itemView.findViewById(R.id.idTextView);
    }

    public void bindTo(SQLList list) {
        textView.setText(list.getName());
        id = list.getId();
        idView.setText(Integer.toString(list.getId()));
    }

    public void clear() {
        textView.setText("");
        id = 0;
        idView.setText("0");
    }
}

private static final DiffCallback<SQLList> DIFF_CALLBACK = new DiffCallback<SQLList>() {
    @Override
    public boolean areItemsTheSame(@NonNull SQLList oldItem, @NonNull SQLList newItem) {
        //5
        return oldItem.getId() == newItem.getId();
    }

    @Override
    public boolean areContentsTheSame(@NonNull SQLList oldItem, @NonNull SQLList newItem) {
        //6
        return oldItem.getName().equals(newItem.getName());
    }
};
}

查看模型:

public static class ListViewModel extends ViewModel {
    public final LiveData<PagedList<SQLList>> listsList;
    public ListViewModel(){
        //7
        listsList = new LivePagedListBuilder<>(DMO.getDao().loadListFactory(),20).build();
    }
}

fragment RecyclerView的一部分放在:

 ...
 //8
 ListViewModel listViewModel = ViewModelProviders.of(this).get(ListViewModel.class);
    adapter = new ListsAdapter(context);
    listViewModel.listsList.observe(this, new Observer<PagedList<SQLList>>() {
        @Override
        public void onChanged(@Nullable PagedList<SQLList> sqlLists) {
          //9  
          adapter.setList(sqlLists);
        }
    });
    recyclerView.setAdapter(adapter);
...

最佳答案

发现问题:我忘记设置布局管理器了!

关于android - 分页库未向我的 PagedListAdapter 发送任何数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48927677/

有关android - 分页库未向我的 PagedListAdapter 发送任何数据的更多相关文章

  1. ruby - 如何将脚本文件的末尾读取为数据文件(Perl 或任何其他语言) - 2

    我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚

  2. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  3. ruby-on-rails - 如何在我的 Rails 应用程序 View 中打印 ruby​​ 变量的内容? - 2

    我是一个Rails初学者,但我想从我的RailsView(html.haml文件)中查看Ruby变量的内容。我试图在ruby​​中打印出变量(认为它会在终端中出现),但没有得到任何结果。有什么建议吗?我知道Rails调试器,但更喜欢使用inspect来打印我的变量。 最佳答案 您可以在View中使用puts方法将信息输出到服务器控制台。您应该能够在View中的任何位置使用Haml执行以下操作:-puts@my_variable.inspect 关于ruby-on-rails-如何在我的R

  4. ruby-on-rails - link_to 不显示任何 rails - 2

    我试图在索引页中创建一个超链接,但它没有显示,也没有给出任何错误。这是我的index.html.erb代码。ListingarticlesTitleTextssss我检查了我的路线,我认为它们也没有问题。PrefixVerbURIPatternController#Actionwelcome_indexGET/welcome/index(.:format)welcome#indexarticlesGET/articles(.:format)articles#indexPOST/articles(.:format)articles#createnew_articleGET/article

  5. ruby - Ruby 有 `Pair` 数据类型吗? - 2

    有时我需要处理键/值数据。我不喜欢使用数组,因为它们在大小上没有限制(很容易不小心添加超过2个项目,而且您最终需要稍后验证大小)。此外,0和1的索引变成了魔数(MagicNumber),并且在传达含义方面做得很差(“当我说0时,我的意思是head...”)。散列也不合适,因为可能会不小心添加额外的条目。我写了下面的类来解决这个问题:classPairattr_accessor:head,:taildefinitialize(h,t)@head,@tail=h,tendend它工作得很好并且解决了问题,但我很想知道:Ruby标准库是否已经带有这样一个类? 最佳

  6. ruby-on-rails - RSpec:避免使用允许接收的任何实例 - 2

    我正在处理旧代码的一部分。beforedoallow_any_instance_of(SportRateManager).toreceive(:create).and_return(true)endRubocop错误如下:Avoidstubbingusing'allow_any_instance_of'我读到了RuboCop::RSpec:AnyInstance我试着像下面那样改变它。由此beforedoallow_any_instance_of(SportRateManager).toreceive(:create).and_return(true)end对此:let(:sport_

  7. ruby - 我可以将我的 README.textile 以正确的格式放入我的 RDoc 中吗? - 2

    我喜欢使用Textile或Markdown为我的项目编写自述文件,但是当我生成RDoc时,自述文件被解释为RDoc并且看起来非常糟糕。有没有办法让RDoc通过RedCloth或BlueCloth而不是它自己的格式化程序运行文件?它可以配置为自动检测文件后缀的格式吗?(例如README.textile通过RedCloth运行,但README.mdown通过BlueCloth运行) 最佳答案 使用YARD直接代替RDoc将允许您包含Textile或Markdown文件,只要它们的文件后缀是合理的。我经常使用类似于以下Rake任务的东西:

  8. jquery - 我的 jquery AJAX POST 请求无需发送 Authenticity Token (Rails) - 2

    rails中是否有任何规定允许站点的所有AJAXPOST请求在没有authenticity_token的情况下通过?我有一个调用Controller方法的JqueryPOSTajax调用,但我没有在其中放置任何真实性代码,但调用成功。我的ApplicationController确实有'request_forgery_protection'并且我已经改变了config.action_controller.consider_all_requests_local在我的environments/development.rb中为false我还搜索了我的代码以确保我没有重载ajaxSend来发送

  9. java - 我的模型类或其他类中应该有逻辑吗 - 2

    我只想对我一直在思考的这个问题有其他意见,例如我有classuser_controller和classuserclassUserattr_accessor:name,:usernameendclassUserController//dosomethingaboutanythingaboutusersend问题是我的User类中是否应该有逻辑user=User.newuser.do_something(user1)oritshouldbeuser_controller=UserController.newuser_controller.do_something(user1,user2)我

  10. ruby - 我如何添加二进制数据来遏制 POST - 2

    我正在尝试使用Curbgem执行以下POST以解析云curl-XPOST\-H"X-Parse-Application-Id:PARSE_APP_ID"\-H"X-Parse-REST-API-Key:PARSE_API_KEY"\-H"Content-Type:image/jpeg"\--data-binary'@myPicture.jpg'\https://api.parse.com/1/files/pic.jpg用这个:curl=Curl::Easy.new("https://api.parse.com/1/files/lion.jpg")curl.multipart_form_

随机推荐