多选对话框,代码如下: 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(); } }
多选dialog的简单实现
最新推荐文章于 2023-04-03 09:53:54 发布