前面我們講到了Data Binding在Activity中的使用和在Fragment中的使用,除此之外,Data Binding也可以使用在RecyclerView/AdapterView的Adapter中,本文以RecyclerView為例。
創(chuàng)新互聯(lián)堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都做網(wǎng)站、成都網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的寧蒗網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
按照通常的做法,我們在Adapter中會定義一個ViewHolder,在此ViewHolder中取得一些布局View的引用。
使用Data Binding后同樣可以簡化Adapter中的操作。
比如我們新建布局文件item_binding.xml:
新建后我們會發(fā)現(xiàn)IDE會為我們生成一個綁定類ItemBinding.java,此時我們就可以把它定義在ViewHolder中:
如果沒有生成,依然參考 這篇文章
class ItemsHolder extends RecyclerView.ViewHolder {
ItemBinding binding;
ItemsHolder(View itemView) {
super(itemView);
binding = DataBindingUtil.bind(itemView);
}
}
定義好上面的ViewHolder后,我們就覆寫RecyclerView.Adapter的onCreateViewHolder()方法來創(chuàng)建一個ViewHolder:
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.item, parent, false);
return new ItemsHolder(v);
}
上面我們創(chuàng)建好ViewHolder后,我們就可以在這個方法中使用它了,用法就跟之前我們在Activity中和Fragment中一樣了。
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
ItemsHolder vh = (ItemsHolder)holder;
Item item = getItem(position);
vh.binding.tvExample.setText(item.getName());
}
下一篇我們將會介紹BindingAdapter的使用,它應(yīng)用的場景也很多,我們將以ImageView來舉例,大大簡化我們開發(fā)中加載網(wǎng)絡(luò)/本地圖片的重復(fù)代碼(僅需一行代碼)。