如何在对象列表中在android中创建可扩展列表视图?

时间:2014-03-25 06:04:25

标签: android list expandablelistview expandablelistadapter

我在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

3 个答案:

答案 0 :(得分:4)

您需要创建扩展BaseExpandableListAdapter的适配器,它将管理子视图和父视图。有关详细信息,请参阅this

答案 1 :(得分:2)

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

这是一个很好的例子

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

答案 2 :(得分:0)

使用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