FirebaseRecyclerAdapter does not work with data binding

I use RecyclerView with reference to the file , but when I run the app for the first time does not appear after updating any content or application updates through instant execution will be content.

my ViewHolder:

class MyViewHolder extends RecyclerView.ViewHolder {
    private ItemBinding mBinding;

    public MyViewHolder(View itemView) {
        super(itemView);
        mBinding = DataBindingUtil.bind(itemView);
    }

    ItemBinding getBinding() {
        return mBinding;
    }
}

my adapter:

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();
    }
}

I found in another question I need to call binding.executePendingBindings()what I did without success.

Edit

I just added a log call:

Log.d(BuildConfig.TAG, "called populateViewHolder " + position);

according to the method populateViewHolder. The magazine is never printed.

Edit 2

How do I initialize my 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);
+4
source share
3

:

firebase/FirebaseUI-Android ..? RecyclerView height wrap_content match_parent .

-, height ​​ wrap_content RecyclerView FirebaseRecyclerAdapter DataBinding.

android:layout_height="match_parent"

.

FirebaseUI-Android , RecyclerView . Github.

+1

ArrayList . onBindViewHolder . onBindViewHolder - . MyViewHolder, , .

-1

mAdapter = new MyAdapter(mref.orderByChild("date"));
mRecyclerView.setAdapter(mAdapter);

onStart. onStart onCreate. recyclerView , . onCreate after

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);
-1

Source: https://habr.com/ru/post/1658148/


All Articles