您的位置:首页 > 其它

多选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();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: