【问题标题】:How do I create an expandable list view in android from a List of Objects?如何从对象列表在 android 中创建可扩展的列表视图?
【发布时间】:2014-03-25 06:04:25
【问题描述】:

我有一个 android 中的对象列表。我想遍历列表并创建一个可扩展的列表视图,每个对象一个条目。我已经在 xml 文件中创建了 ExpandableListView。所以我知道我开始:

ExpandableListView results = ((ExpandableListView)rootView.findViewById(R.id.results));

我想遍历对象列表,为每个对象创建一个Parent,每个Child都是主对象的一个​​实例变量。

例如:

Parent = Object.Title
  Child1 = Object.Taste
  Child2 = Object.smell
Parent1 = Object1.Title
  Child1 = Object1.Taste
  Child2 = Object1.smell

【问题讨论】:

标签: android list expandablelistview expandablelistadapter


【解决方案1】:

您需要创建扩展 BaseExpandableListAdapter 的适配器,它将管理子视图和父视图。详情请见this

【讨论】:

  • 希望在 SO 上看到更详细的答案,而不是页外链接。
【解决方案2】:

您基本上必须使用BaseExpandableListAdapter 扩展您的适配器并覆盖它的方法。

这是一个很好的例子

http://theopentutorials.com/tutorials/android/listview/android-expandable-list-view-example/

【讨论】:

    【解决方案3】:

    使用 BaseExpandableListAdapter 和 ovverride getChildView(...) 和 getGroupView(...) 扩展您的自定义适配器,如下所示:

    public View getChildView(int groupPosition, final int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
              tempChild = (ArrayList<String>) Childtem.get(groupPosition);
              TextView text = null;
              if (convertView == null) {
                     convertView = minflater.inflate(R.layout.childrow, null);
              }
              text = (TextView) convertView.findViewById(R.id.textView1);
              text.setText(tempChild.get(childPosition));
              convertView.setOnClickListener(new OnClickListener() {
                     public void onClick(View v) {
                           Toast.makeText(activity, tempChild.get(childPosition), Toast.LENGTH_SHORT).show();
                     }
              });
              return convertView;
       }
    
    public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
              if (convertView == null) {
                     convertView = minflater.inflate(R.layout.grouprow, null);
              }
              ((CheckedTextView) convertView).setText(groupItem.get(groupPosition));
              ((CheckedTextView) convertView).setChecked(isExpanded);
              return convertView;
       }
    

    查看完整示例源代码here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-12
      相关资源
      最近更新 更多