我正在使用Button和一个包含ExpandableListView的AlertDialog。 还有一个复选框和子行,它的工作正常单选,但它不等待多个选择。
当我用于多个选择时,我必须在对话框外单击以终止对话框。
答案 0 :(得分:3)
好的,我正在回答我自己的问题,现在它正在运作。我只是使用检查而不检查图像来显示子类别是否被选中。
步骤:
在工具栏/操作栏上创建一个按钮,使UI像微调器一样。
Button btn_filter = (Button)layoutView.findViewById(R.id.filters);
btn_filter.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
dialogFilter.show();
}
});
创建一个警告对话框,在按钮下方设置x,y位置。
WindowManager.LayoutParams wmlp = dialogFilter.getWindow().getAttributes();
wmlp.gravity = Gravity.TOP | Gravity.LEFT;
wmlp.x = 10; //x position
wmlp.y = 100; //y position
为类别和子类别创建类(模型)并添加数据。
public class FilterCategory {
public String category_name = null;
public ArrayList<SubCategory> subcategory_array = new ArrayList<SubCategory>();
}
public class SubCategory {
public String subcategory_name = null;
public boolean selected = false;
}
检查选中或未选中。
if(category_array.get(groupPosition).subcategory_array.get(childPosition).selected) {
category_array.get(groupPosition).subcategory_array.get(childPosition).selected = false;
} else {
category_array.get(groupPosition).subcategory_array.get(childPosition).selected = true;
}
最后在适配器
中 @Override
public View getGroupView(int groupPosition, boolean arg1, View view, ViewGroup parent) {
GroupHolder groupHolder;
if (view == null) {
view = LayoutInflater.from(mContext).inflate(R.layout.group_row,null);
groupHolder = new GroupHolder();
groupHolder.img = (ImageView) view.findViewById(R.id.tab_img);
groupHolder.title = (TextView) view.findViewById(R.id.group_name);
view.setTag(groupHolder);
} else {
groupHolder = (GroupHolder) view.getTag();
}
groupHolder.title.setText(mGroupCollection.get(groupPosition).category_name);
if(arg1){
groupHolder.img.setImageResource(R.drawable.dropdown_small_arrow_converted);
}else{
groupHolder.img.setImageResource(R.drawable.right_small_arrow_converted);
}
return view;
}
@Override
public View getChildView(final int groupPosition, final int childPosition, boolean arg2, View convertView,ViewGroup parent)
{
final ChildHolder childHolder;
if (convertView == null) {
convertView = LayoutInflater.from(mContext).inflate(R.layout.child_row, null);
childHolder = new ChildHolder();
childHolder.checkBox = (ImageView)convertView.findViewById(R.id.checkbox);
childHolder.name=(TextView)convertView.findViewById(R.id.childname);
convertView.setTag(childHolder);
} else {
childHolder = (ChildHolder) convertView.getTag();
}
childHolder.name.setText(mGroupCollection.get(groupPosition).subcategory_array.get(childPosition).subcategory_name);
if(mGroupCollection.get(groupPosition).subcategory_array.get(childPosition).selected) {
childHolder.checkBox.setVisibility(View.VISIBLE);
} else {
childHolder.checkBox.setVisibility(View.GONE);
}
return convertView;
}
截图:
抱歉,我无法发布截图,因为发布图片需要至少10个声望:(