是否可以使用expandablelistview作为具有多个选择的微调器的下拉视图?

时间:2015-05-10 17:06:42

标签: android spinner expandablelistview

我正在使用Button和一个包含ExpandableListView的AlertDialog。 还有一个复选框和子行,它的工作正常单选,但它不等待多个选择。

当我用于多个选择时,我必须在对话框外单击以终止对话框。

1 个答案:

答案 0 :(得分:3)

好的,我正在回答我自己的问题,现在它正在运作。我只是使用检查而不检查图像来显示子类别是否被选中。

步骤:

  1. 在工具栏/操作栏上创建一个按钮,使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();
        }
    });
    
  2. 创建一个警告对话框,在按钮下方设置x,y位置。

    WindowManager.LayoutParams wmlp = dialogFilter.getWindow().getAttributes();
    wmlp.gravity = Gravity.TOP | Gravity.LEFT;
    wmlp.x = 10;   //x position
    wmlp.y = 100;   //y position
    
  3. 为类别和子类别创建类(模型)并添加数据。

    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;
    }
    
  4. 检查选中或未选中。

       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;
            }
    
  5. 最后在适配器

     @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;
     }
    
  6. 截图:

    抱歉,我无法发布截图,因为发布图片需要至少10个声望:(