多选dialog的简单实现
2016-01-04 11:30
253 查看
多选对话框,代码如下: import android.content.Context; import java.util.ArrayList; import cn.doolii.shopping.adapter.MultiChoicAdapter; import cn.doolii.shopping.bean.CategoryBean; import cn.doolii.shopping.utils.CommonUtils; /** * 多选的dialog * Created by hrcf on 2015/12/3. */ public class MultiChoicDialog extends AbstractChoickDialog { private MultiChoicAdapter mMultiChoicAdapter; public MultiChoicDialog(Context context, ArrayList<CategoryBean> list, boolean[] flag) { super(context, list); initData(flag); } protected void initData(boolean flag[]) { mMultiChoicAdapter = new MultiChoicAdapter(mContext, mList, flag); mListView.setAdapter(mMultiChoicAdapter); mListView.setOnItemClickListener(mMultiChoicAdapter); CommonUtils.setListViewHeightBasedOnChildren(mListView);//动态设置listview的高度 } public boolean[] getSelectItem() { return mMultiChoicAdapter.getSelectItem(); } } CommonUtils工具类中的setListViewHeightBasedOnChildren方法
/** * 动态设置ListView的高度 * * @param listView */ public static void setListViewHeightBasedOnChildren(ListView listView) { if (listView == null) return; BaseAdapter listAdapter = (BaseAdapter) 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); }
使用如下:
//品类选择 private void selectData() { if (categoryList != null) {//categoryList 数据的集合 int COUNT = categoryList.size(); boolean booleans[] = new boolean[COUNT]; mMultiChoicDialog = new MultiChoicDialog(this, categoryList, booleans); mMultiChoicDialog.setTitle("请选择"); mMultiChoicDialog .setOnOKButtonListener(new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { boolean[] selItems = mMultiChoicDialog.getSelectItem();//所有的品类是否选中情况 选中true false StringBuffer stringBuffer = new StringBuffer();//添加选中的到StringBuffer中 List<String> arrays = new ArrayList(); for (int i = 0; i < selItems.length - 1; i++) { if (selItems[i] == true) {//代表被选择的i条目 String name = categoryList.get(i).getName();//获取到集合中被选择对象的名字 } } }); mMultiChoicDialog.show(); } }
相关文章推荐
- Android内存泄露自动检测神器LeakCanary
- t-SNE visualization of CNN codes
- 神经网络编程入门
- RobotFramework-调用.py文件
- 虚树小结
- 同步复位和异步复位的对比
- Leetcode211: Populating Next Right Pointers in Each Node II
- 又见嵌入式
- 工业镜头五大参数
- 在分布式项目中使用memcached+cookie替代session
- [leetcode]Same Tree
- 写一个Redis封装类
- 斯坦纳树小结
- jquery如何获得td标签中value属性的值
- 新年第一篇 Apache Commons
- 调用存储过程
- 临时
- Android内存泄漏终极解决篇(下)
- webstrom注册码
- QPBOC扩展应用交易流程