ListView嵌套ListView
来源:互联网 发布:学plc编程 编辑:程序博客网 时间:2024/06/04 20:45
在项目开发当中,我们总是会遇到这样的需求:在list表单中,它的子item也会list,比如这个效果图
那么,我们如何来实现呢?
第一个种思路:
我们将它看成一个实体类,然后在adapter中当前的item和下一个item的店铺名字进行匹配,如果店铺名字一致,我们就控制店铺名字和欠款不显示,反之,则显示。这个比较容易实现,我就不进行代码展示了。
第二种思路:listView嵌套listView,我们分成两个实体类,一个是包含:订单号、主子账号、付款方式等等的实体类statementOfAccountItem,另一个是包含:店铺名称、店铺金额和statementOfAccount列表的实体类statementOfAccount。
adapter的主要代码
public class StatementOfAccountItemAdapter extends BaseAdapter { private Context context; private List<StatementOfAccount> mData; public StatementOfAccountItemAdapter(List<StatementOfAccount> mData, Context context) { this.mData = mData; this.context = context; } public void AdapterNofy(List<StatementOfAccount> list) { this.mData = list; this.notifyDataSetChanged(); } @Override public int getCount() { return mData.size(); } @Override public Object getItem(int position) { return mData.get(position); } @Override public long getItemId(int position) { return position; } public void notifyAdapter(List<StatementOfAccount> list) { this.mData = list; this.notifyDataSetChanged(); } @Override public View getView(int position, View convertView, ViewGroup parent) { viewHolder vHolder = null; LayoutInflater inflater = LayoutInflater.from(context); if (null == convertView) { convertView = inflater.inflate(R.layout.activity_statement_of_account_item, null); vHolder = new viewHolder(convertView); convertView.setTag(vHolder); } else { vHolder = (viewHolder) convertView.getTag(); } //捆绑数据 StatementOfAccount item = mData.get(position); vHolder.phone_store_name.setText(item.getShopName()); vHolder.phone_store_arrears.setText(item.getTotalArrears()); List<StatementOfAccountItem> itemList = item.getList(); StatementOfAccountItemTwoAdapter adapter = new StatementOfAccountItemTwoAdapter(itemList, context); vHolder.listView.setAdapter(adapter); //重新计算listView的高度,子listview必须是linearLayout ListAdapterUtility.setListViewHeightBaseOnChildren(vHolder.listView); return convertView; } public class viewHolder { // 店铺名字 @Bind(R.id.accout_item_phone_store_name) TextView phone_store_name; // 店铺欠款金额 @Bind(R.id.accout_item_phone_store_arrears) TextView phone_store_arrears; @Bind(R.id.statement_account_list) ListView listView; public viewHolder(View view) { ButterKnife.bind(this, view); } }}
重新计算adapter高度的方法类
public class ListAdapterUtility { public static void setListViewHeightBaseOnChildren(ListView listView) { ListAdapter listAdapter = listView.getAdapter(); if (listAdapter == null) { return; } int totalHeight = 0; for (int i = 0; i < listAdapter.getCount(); i++) { View listItem = listAdapter.getView(i, null, listView); listItem.measure(0, 0); totalHeight += listItem.getMeasuredHeight(); } ViewGroup.LayoutParams params = listView.getLayoutParams(); params.height = totalHeight + (listView.getDividerHeight() + (listAdapter.getCount() - 1)); listView.setLayoutParams(params); }}
0 0
- ListView中嵌套ListView
- listview嵌套listview
- ListView嵌套ListView优化
- ListView中嵌套listView
- ListView中嵌套ListView
- 关于listview嵌套listview
- ListView嵌套ListView
- ListView中嵌套ListView
- Listview嵌套Listview
- ListView嵌套listView问题
- ListView嵌套ListView
- Listview嵌套Listview
- ListView中嵌套ListView
- listview嵌套listview问题
- 解决listview 嵌套listview
- listview嵌套listview
- ListView中嵌套ListView
- ListView嵌套ListView
- Swarm和Mesos集成指南-原理剖析
- UE4 Error when building: -waitmutex" exited with code 5 . Please verify that you have sufficient rig
- 继承的5种方式
- Android HttpUtils-Http请求的工具类
- eclipse导入其他项目运行时报404错误
- ListView嵌套ListView
- 欢迎使用CSDN-markdown编辑器
- 离散信号频谱分析
- BZOJ 1122: [POI2008]账本BBB
- SLAM方法汇总
- PHP 学习语法
- 重识JavaScript(二)
- 深刻理解 React (一) ——JSX和虚拟DOM
- Relative Orientation 与fundamental essential matrix