我有一个 Android 待办事项列表应用程序,其中包含使用 Room 访问的 SQLite 数据库。然后我想在抽屉导航中列出可用列表。所以我使用了分页库。现在 RecyclerView 是空的,我不知道为什么。顺便说一句:我的列表都不起作用。我是初学者,所以我坚持官方教程。我已经发现,他们错了,ViewModel需要一个空的构造函数。现在情况是这样的:成功调用设置适配器的方法 (8),ViewModel已创建 (7) Adapter已创建 (1),setList()方法被调用 (9),但没有 Holder正在创建 (4),否 onCreateViewHolder或 onBindViewHolder被称为 (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/
我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚
我主要使用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
我是一个Rails初学者,但我想从我的RailsView(html.haml文件)中查看Ruby变量的内容。我试图在ruby中打印出变量(认为它会在终端中出现),但没有得到任何结果。有什么建议吗?我知道Rails调试器,但更喜欢使用inspect来打印我的变量。 最佳答案 您可以在View中使用puts方法将信息输出到服务器控制台。您应该能够在View中的任何位置使用Haml执行以下操作:-puts@my_variable.inspect 关于ruby-on-rails-如何在我的R
我试图在索引页中创建一个超链接,但它没有显示,也没有给出任何错误。这是我的index.html.erb代码。ListingarticlesTitleTextssss我检查了我的路线,我认为它们也没有问题。PrefixVerbURIPatternController#Actionwelcome_indexGET/welcome/index(.:format)welcome#indexarticlesGET/articles(.:format)articles#indexPOST/articles(.:format)articles#createnew_articleGET/article
有时我需要处理键/值数据。我不喜欢使用数组,因为它们在大小上没有限制(很容易不小心添加超过2个项目,而且您最终需要稍后验证大小)。此外,0和1的索引变成了魔数(MagicNumber),并且在传达含义方面做得很差(“当我说0时,我的意思是head...”)。散列也不合适,因为可能会不小心添加额外的条目。我写了下面的类来解决这个问题:classPairattr_accessor:head,:taildefinitialize(h,t)@head,@tail=h,tendend它工作得很好并且解决了问题,但我很想知道:Ruby标准库是否已经带有这样一个类? 最佳
我正在处理旧代码的一部分。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_
我喜欢使用Textile或Markdown为我的项目编写自述文件,但是当我生成RDoc时,自述文件被解释为RDoc并且看起来非常糟糕。有没有办法让RDoc通过RedCloth或BlueCloth而不是它自己的格式化程序运行文件?它可以配置为自动检测文件后缀的格式吗?(例如README.textile通过RedCloth运行,但README.mdown通过BlueCloth运行) 最佳答案 使用YARD直接代替RDoc将允许您包含Textile或Markdown文件,只要它们的文件后缀是合理的。我经常使用类似于以下Rake任务的东西:
rails中是否有任何规定允许站点的所有AJAXPOST请求在没有authenticity_token的情况下通过?我有一个调用Controller方法的JqueryPOSTajax调用,但我没有在其中放置任何真实性代码,但调用成功。我的ApplicationController确实有'request_forgery_protection'并且我已经改变了config.action_controller.consider_all_requests_local在我的environments/development.rb中为false我还搜索了我的代码以确保我没有重载ajaxSend来发送
我只想对我一直在思考的这个问题有其他意见,例如我有classuser_controller和classuserclassUserattr_accessor:name,:usernameendclassUserController//dosomethingaboutanythingaboutusersend问题是我的User类中是否应该有逻辑user=User.newuser.do_something(user1)oritshouldbeuser_controller=UserController.newuser_controller.do_something(user1,user2)我
我正在尝试使用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_