Nurseyit Tursunkulov
Nurseyit Tursunkulov

Reputation: 9390

how to use recycleView with databinding library?

I want to make recycle view with ViewModel and data binding following MVVM principle. But I don't know how to create data binding in onCreateViewHolder(). What I should do?

override fun onCreateViewHolder(parent: ViewGroup,
                                viewType: Int): MyAdapter.MyViewHolder {
    // create a new view
    val inflator = LayoutInflater.from(parent.context)

    val listItemBinding :ResItemBinding = DataBindingUtil.inflate(inflator, R.layout.res_item, parent, false)
    // set the view's size, margins, paddings and layout parameters
    return MyViewHolder(listItemBinding.root)
}

I tried the above solution but it does not work properly

Upvotes: 0

Views: 118

Answers (2)

Ankit Tale
Ankit Tale

Reputation: 2004

You can use data binding as below

private YourAdapterBinding mYourAdapterBinding

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        mYourAdapterBinding =   DataBindingUtil.inflate(LayoutInflater.from(parent.getContext()),R.layout.your_custome_layout,parent,false);
        View itemView = mYourAdapterBinding.getRoot();
        return new ViewHolder(itemView);
    }


     @Override
    public void onBindViewHolder(ViewHolder viewHolder, int position) {

        Guide guide = mGuideOptionList.get(position);
        viewHolder.textView.setText(mYourAdapterList.get(position).getTitle());
        viewHolder.parent.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mYourListItem.onItemClick((int) v.getTag(),v);
            }
        });

        mYourAdapterBinding.executePendingBindings();
    }


     @Override
    public long getItemId(int position) {
        return super.getItemId(position);
    }

Upvotes: 1

Nurseyit Tursunkulov
Nurseyit Tursunkulov

Reputation: 9390

after searching for 3 days I could not find anything suitable for me. But the JetPack Sunflower app used databinding with ListAdapter. So if anyone faced this problem use ListAdapter instead of Adapter. Hope it helps someone

Upvotes: 0

Related Questions