Reputation: 9390
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
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
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