DataBinding绑定Listview

    xiaoxiao2025-08-14  6

    listview绑定DataBinding的时候只需要变动一下布局文件和viewholder类就可以了

    listview都会有一个item布局和一个item类,我们直接看这两个东西怎么用:

    item布局:

    item_coins_detail.java:

    <layout xmlns:android="http://schemas.android.com/apk/res/android"> <data> <import type="com.example.a96314.databindingtest.CoinsDetailBean" /> <variable name="CoinsDetail" type="CoinsDetailBean" /> </data> <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent" android:padding="10dp"> <TextView android:id="@+id/coins_detail_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@{CoinsDetail.detail_title}" /> <TextView android:id="@+id/coins_detail_content" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/coins_detail_title" android:layout_marginTop="5dp" android:text="@{CoinsDetail.detail_content}" /> <TextView android:id="@+id/coins_detail_num" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:text="@{CoinsDetail.detail_num}" /> </RelativeLayout> </layout>

    还是在<data>标签里声明用到的itembean然后在textview里通过 @{}语法来赋值

    然后我们看itemadtapter

    DetailAdapter.java

    public class DetailAdapter extends BaseAdapter { private Context mContext; private ArrayList<CoinsDetailBean> coins_details; public DetailAdapter(Context mContext, ArrayList<CoinsDetailBean> coins_details) { this.mContext = mContext; this.coins_details = coins_details; } @Override public int getCount() { return coins_details.size(); } @Override public Object getItem(int position) { return coins_details.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ItemCoinsDetailBinding binding = null; CoinsDetailViewHolder holder = null; if (convertView == null) { holder = new CoinsDetailViewHolder(); //获取item布局的binding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.item_coins_detail, parent, false); //获取布局 convertView = binding.getRoot(); //缓存binding到holder holder.setItemCoinsDetailBinding(binding); //设置Tag convertView.setTag(holder); } else { holder = (CoinsDetailViewHolder) convertView.getTag(); binding = (ItemCoinsDetailBinding) holder.getItemCoinsDetailBinding(); } //通过binding设置当前的item对象,然后它就会自动给textview赋值 binding.setCoinsDetail(coins_details.get(position)); return convertView; } //viewholder类里只有一个binding对象和它的get,set方法 private class CoinsDetailViewHolder { private ViewDataBinding itemCoinsDetailBinding; public void setItemCoinsDetailBinding(ViewDataBinding itemCoinsDetailBinding) { this.itemCoinsDetailBinding = itemCoinsDetailBinding; } public ViewDataBinding getItemCoinsDetailBinding() { return itemCoinsDetailBinding; } } }

    代码里注释的很详细了,大家只要看一下就会明白databinding绑定listview了。

    代码下载: http://dl.download.csdn.net/down11/20160815/f8f17155f39cc7cdb9f7dcad96d0315b.zip?response-content-disposition=attachment%3Bfilename%3D%22DataBindingTest-listview.zip%22&OSSAccessKeyId=9q6nvzoJGowBj4q1&Expires=1471234967&Signature=77A4cjRK1pZemwx%2FWVumu%2BUYeKA%3D

    转载请注明原文地址: https://ju.6miu.com/read-1301730.html
    最新回复(0)