您好,登錄后才能下訂單哦!
前面我們講到了Data Binding在Activity中的使用和在Fragment中的使用,除此之外,Data Binding也可以使用在RecyclerView/AdapterView的Adapter中,本文以RecyclerView為例。
按照通常的做法,我們在Adapter中會定義一個ViewHolder,在此ViewHolder中取得一些布局View的引用。
使用Data Binding后同樣可以簡化Adapter中的操作。
比如我們新建布局文件item_binding.xml:
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center"
>
<TextView
android:id="@+id/tv_example"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="16sp" />
</LinearLayout>
</layout>
新建后我們會發現IDE會為我們生成一個綁定類ItemBinding.java,此時我們就可以把它定義在ViewHolder中:
如果沒有生成,依然參考 這篇文章
class ItemsHolder extends RecyclerView.ViewHolder {
ItemBinding binding;
ItemsHolder(View itemView) {
super(itemView);
binding = DataBindingUtil.bind(itemView);
}
}
定義好上面的ViewHolder后,我們就覆寫RecyclerView.Adapter的onCreateViewHolder()方法來創建一個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);
}
上面我們創建好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的使用,它應用的場景也很多,我們將以ImageView來舉例,大大簡化我們開發中加載網絡/本地圖片的重復代碼(僅需一行代碼)。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。