在普通的activity和fragment里用很简单就不记了,这里写个在adpater里用的例子
使用前gradle:
android {
...
viewBinding{ enabled true}
}
如下,ItemHomeBinding
这个类是根据你的layout名字自动生成的;
这里我用的PagedList所以这么写,同理可以可以改成RecyclerView.Adapter或者listadapter;
viewBinding.getRoot()就相当于以前的itemView
/**
* Created by kusunoki on 2020/5/24 0024 13:48.
*/
public class BaseStatusAdapter extends PagedListAdapter<StatusBean, BaseStatusAdapter.BaseViewHolder> {
Context context;
protected BaseStatusAdapter() { // 这里是查重方式,自己写
super(new DiffUtil.ItemCallback<StatusBean>() {
@Override
public boolean areItemsTheSame(@NonNull StatusBean oldItem, @NonNull StatusBean newItem) {
return oldItem.getId() == newItem.getId();
}
@Override
public boolean areContentsTheSame(@NonNull StatusBean oldItem, @NonNull StatusBean newItem) {
return oldItem.getText().equals(newItem.getText()); /
}
});
}
static class BaseViewHolder extends RecyclerView.ViewHolder { // viewHolder只需要这几句,就很爽
ItemHomeBinding binding;
public BaseViewHolder(@NonNull ItemHomeBinding viewBinding) {
super(viewBinding.getRoot());
binding = viewBinding;
}
}
@NonNull
@Override
public BaseViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { // 这里也只需要这几句,context之后要用所以留下来了
context = parent.getContext();
ItemHomeBinding viewBinding = ItemHomeBinding.inflate(LayoutInflater.from(parent.getContext()),parent,false);
BaseViewHolder holder = new BaseViewHolder(viewBinding);
return holder;
}
@Override
public void onBindViewHolder(@NonNull BaseViewHolder holder, int position) {
holder.binding.tvHometext.setText("文字"); // 直接用
}
}