DataBinding绑定Listview
来源:互联网 发布:网游 mac版 编辑:程序博客网 时间:2024/06/05 07:18
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
0 0
- DataBinding绑定Listview
- dataBinDing 绑定receycelView, listView ,和 图片加载
- DataBinding 绑定
- Android开发-数据绑定-DataBinding-AndroidStudio(五)ListView实现
- 数据绑定技术-databinding
- 数据绑定框架:Databinding
- Android DataBinding 双向绑定
- DataBinding的事件绑定
- DataBinding事件绑定【二】
- android databinding绑定教程
- Android DataBinding数据绑定技术在传统ListView中的使用简例
- DataBinding实现ListView
- android databinding RecyclerView / ListView
- Grails中的DataBinding数据绑定
- 数据绑定之DataBinding细解
- MvvmLight(二)数据绑定DataBinding
- Android 数据绑定框架DataBinding
- Android数据绑定框架DataBinding
- LeetCode—385. Mini Parser
- https://github.com/fusijie/Cocos-Resource
- 基于内容的推荐系统(content-based recommender system)
- 求和问题总结(leetcode 2Sum, 3Sum, 4Sum, K Sum)
- LRUCache学习渐进
- DataBinding绑定Listview
- Thrift框架实现Socket通信
- HDU 1555 How many days?
- 宏定义输出
- Redis中keys命令带来的性能问题与解决方案
- 更改toolbar左上角默认图标
- Jmeter-->一个简单的压力测试
- 快速幂取模及其应用
- 算法题:反转数组