如何将 recyclerView 与数据绑定库一起使用?
how to use recycleView with databinding library?
我想按照MVVM 原则使用ViewModel 和数据绑定制作回收视图。但我不知道如何在 onCreateViewHolder()
中创建数据绑定。我该怎么办?
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)
}
我尝试了上述解决方案,但它无法正常工作
找了3天没找到适合我的。但是 JetPack Sunflower 应用程序使用 ListAdapter 进行数据绑定。因此,如果有人遇到此问题,请使用 ListAdapter 而不是 Adapter。希望对某人有所帮助
您可以使用如下数据绑定
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);
}
我想按照MVVM 原则使用ViewModel 和数据绑定制作回收视图。但我不知道如何在 onCreateViewHolder()
中创建数据绑定。我该怎么办?
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)
}
我尝试了上述解决方案,但它无法正常工作
找了3天没找到适合我的。但是 JetPack Sunflower 应用程序使用 ListAdapter 进行数据绑定。因此,如果有人遇到此问题,请使用 ListAdapter 而不是 Adapter。希望对某人有所帮助
您可以使用如下数据绑定
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);
}