如何在我的Android自定义列表视图中关闭子视图

时间:2013-12-04 15:39:20

标签: android listview android-listview

我有实施以下方案的问题。我的任务是,

  1. 在Listview (已实施)
  2. 中显示内容
  3. 当我点击列表视图时,需要在点击位置显示另外几个按钮的布局。 (有关您的参考,请参阅附图,已实施)
  4. 现在出现问题,当点击相同的项目时,子布局会关闭,但是我的需要是,我需要显示子布局,如果它没有显示在上面,否则我需要关闭它并在点击下显示布局。
  5. 到目前为止,我使用以下代码来实现此目的,

    holder.layoutOne.setOnClickListener(new OnClickListener() {
                public void onClick(View v) {
                    Log.v("Position", "" + position);
                    if (holder.layoutTwo.getVisibility() == View.VISIBLE) {
                        holder.layoutTwo.setVisibility(View.GONE);
                    } else {
                        holder.layoutTwo.setVisibility(View.VISIBLE);
                    }
                }
            });
    

    根据上面的代码,我检查了布局二的可见性,如果它可见我关闭它,否则我展示了layoutTwo。我知道这个代码只适用于同一个项目点击,但我为其他人做了同样的事情,请分享你的想法。

    图像:

    enter image description here

1 个答案:

答案 0 :(得分:0)

您应该使用ExpandableListView并绑定BaseExpandableListAdapter。

完成后,您可以在列表中添加一个侦听器,名为OnGroupExpandListener

假设你有一个扩展Activity的A类。在这个类中,您实例化一个ExpandableListView:

 ExpandableListView expListView.

现在你有一个ExpandableListView对象。

为此你需要绑定一个适配器(BaseExpandableListAdpater) - 创建一个扩展BaseExpandableListAdpater的类B

对于expListView对象,你可以调用OnGroupExpandListener(它听取对groupItems的点击。我认为这是你想要的吗?)

    expListView.setOnGroupExpandListener(new OnGroupExpandListener() {
    public void onGroupExpand(int groupPosition) {

        final int group_position = groupPosition; 
        int len = adapter.getGroupCount();
            for (int i = 0; i < len; i++) {
                if (i != groupPosition) {
                    expListView.collapseGroup(i);
                }
            }
        }
    });