我使用的是RecyclerView和数据库,但是当我第一次运行应用程序时,什么都没有显示出来,然后在更新一些内容或通过即时运行更新应用程序之后,内容就会出现。
我的ViewHolder:
class MyViewHolder extends RecyclerView.ViewHolder {
private ItemBinding mBinding;
public MyViewHolder(View itemView) {
super(itemView);
mBinding = DataBindingUtil.bind(itemView);
}
ItemBinding getBinding() {
return mBinding;
}
}我的适配器:
public class MyAdapter extends FirebaseRecyclerAdapter<MyModel, MyViewHolder> {
public MyAdapter(Query ref) {
super(MyModel.class, R.layout.my_item, MyViewHolder.class, ref);
}
@Override
protected void populateViewHolder(MyViewHolder viewHolder, MyModel model, int position) {
ItemBinding binding = viewHolder.getBinding();
binding.setMyModel(model);
binding.executePendingBindings();
}
}我在另一个问题中发现,我需要打电话给binding.executePendingBindings(),那就是我没有成功。
编辑
我刚添加了一个日志呼叫:
Log.d(BuildConfig.TAG, "called populateViewHolder " + position);关于populateViewHolder方法。日志从来没有打印过。
编辑2
初始化recyclerView的方式:
// onCreate
LinearLayoutManager llm = new LinearLayoutManager(this);
llm.setOrientation(LinearLayoutManager.VERTICAL);
mRecyclerView = (RecyclerView) findViewById(R.id.recycler_view)
mRecyclerView.setHasFixedSize(true);
mRecyclerView.setLayoutManager(llm);
mRef = FirebaseDatabase.getInstance().getReference().child(CHILD_TREE)
// onStart
mAdapter = new MyAdapter(mref.orderByChild("date"));
mRecyclerView.setAdapter(mAdapter);发布于 2016-10-27 07:23:07
根据我的评论:
你看过firebase/firebase Android问题了吗..?将
RecyclerView height从wrap_content设置为match_parent解决了这个问题。
显然,当使用带有height的FirebaseRecyclerAdapter时,RecyclerView中的FirebaseRecyclerAdapter设置为DataBinding确实存在问题。
把它改成
android:layout_height="match_parent"而且它应该能工作。
FirebaseUI-Android团队认为这是RecyclerView本身的一个问题,并且已经解决了这个问题。这是吉顿事件中的交叉事件。
发布于 2016-10-19 04:21:46
将数据存储在ArrayList的model.Then中,尝试在适配器中实现onBindViewHolder方法。onBindViewHolder有两个属性-持卡人和位置。持卡器将是MyViewHolder类的对象,您可以使用该位置从数组列表中获取该位置的模型对象。
发布于 2016-10-25 12:30:23
编辑的
你打电话给我的陈述
mAdapter = new MyAdapter(mref.orderByChild("date"));
mRecyclerView.setAdapter(mAdapter);在onStart中。onStart在onCreate之后调用。在初始化适配器之前已经将适配器设置为recyclerView,并且还没有创建数据库的引用。
LinearLayoutManager llm = new LinearLayoutManager(this);
llm.setOrientation(LinearLayoutManager.VERTICAL);
mRecyclerView = (RecyclerView) findViewById(R.id.recycler_view)
mRecyclerView.setHasFixedSize(true);
mRecyclerView.setLayoutManager(llm);
mRef = FirebaseDatabase.getInstance().getReference().child(CHILD_TREE) ;
// adapter must be set after getting mRef
mAdapter = new MyAdapter(mref.orderByChild("date"));
mRecyclerView.setAdapter(mAdapter);https://stackoverflow.com/questions/40120946
复制相似问题