Android 带有不可展开项的可展开ListView

Android 带有不可展开项的可展开ListView,android,listview,navigation-drawer,expandablelistview,indicator,Android,Listview,Navigation Drawer,Expandablelistview,Indicator,我正在尝试在导航抽屉中创建一个可扩展的ListView,它有其他不可扩展的选项。我正在尝试创建如下内容: 所有谷物。五 存档谷物。五 背景 帮助和反馈 关于我们 “所有谷物”和“存档谷物”都会有下拉指示符,因为它们是有孩子的群体,而“设置”、“关于我们”等不会有下拉指示符。我看了所有的地方,想到了两种方法:修改适配器为空组扩展不同的布局,以及在普通ListView上堆叠ExpandableListView 修改适配器并不像我希望的那样可行,因为组指示器是自动连接的。我不知道如何使下拉

我正在尝试在导航抽屉中创建一个可扩展的ListView,它有其他不可扩展的选项。我正在尝试创建如下内容:


所有谷物。五


存档谷物。五


背景


帮助和反馈


关于我们


“所有谷物”和“存档谷物”都会有下拉指示符,因为它们是有孩子的群体,而“设置”、“关于我们”等不会有下拉指示符。我看了所有的地方,想到了两种方法:修改适配器为空组扩展不同的布局,以及在普通ListView上堆叠ExpandableListView

修改适配器并不像我希望的那样可行,因为组指示器是自动连接的。我不知道如何使下拉指示器的自动连接消失。帮忙


将ExpandableListView堆叠在普通ListView上也不像我希望的那样可行,因为我无法让XML与一个抽屉布局中的两个列表协作。帮助?

如果这些是静态元素,那么实现类似ViewItemType的东西可能不值得。可以考虑将它们放在ListVIEW的FooTeVIEW中。
尝试listview.addFooterView(视图)

您的ExpandableListView将使用ExpandableListAdapter,其中包含一些方法,这些方法将对您大有帮助。你可以在这个链接上阅读更多关于他们的信息。从不展开某些位置开始,我过去所做的是重写ExpandableListAdapter中的getChildrenCount()方法。然后指定单击行为,这可以通过重写getGroupViewMethod来完成。您的适配器可能如下所示:

public class MyAdapter extends BaseExpandableListAdapter {
...
@Override
//This is where we tell the list not to expand on any position beyond the first 2
public int getChildrenCount(int position) {
switch(position)
{
case 0:
//Expands with the size of the cereal array
return cerealArray.size();
case 1:
//Expands with the size of the Archived Cereal Array
return archivedCerealArray.size();
default:
//List does not expand
return 0;
 }
...
@Override
public View getGroupView(int groupPosition,boolean isExpanded,View convertView,ViewGroup parent)
{
if (convertView == null) {
            LayoutInflater infalInflater = (LayoutInflater) context
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = infalInflater.inflate(R.layout.kat_layout, null);
        }
 ImageView arrow = (ImageView)convertView.findViewById(R.id.arrowImage);
//Test for position
switch (groupPosition)
{
  case 0:
 //set arrow visibility to visible
arrow.setVisibility(View.VISIBLE);
 break;
 case 1:
 //set arrow visibility to visible
 arrow.setVisibility(View.VISIBLE);
 break;
 case 2:
 //hide arrow
arrow.setVisibility(View.INVISIBLE);
 convertView.setOnClickListener(new OnClickListener()
      {
      @Override
      public void onClick(View v){
      //Navigate to settings
     }
  }
  break;
 case 3:
 //hide arrow
arrow.setVisibility(View.INVISIBLE);
 convertView.setOnClickListener(new OnClickListener()
      {
      @Override
      public void onClick(View v){
      //Help and feedback
     }
  }
  break;
 case 4:
 //hide arrow
arrow.setVisibility(View.INVISIBLE);
  convertView.setOnClickListener(new OnClickListener()
      {
      @Override
      public void onClick(View v){
      //About us
     }
  }
  break;

}
return convertView;
}
这将使前2个元素下面的元素没有子元素。因为他们没有孩子,所以他们不能扩张。 单击事件也将仅在位置条件下处理

至于让组指示符消失,我将在getGroupView()方法中从xml扩展视图。这样,您就可以完全控制它在任何情况下的外观。
我希望这有帮助。祝你好运。

谢谢你的建议,但我已经为groupView提供了自定义视图。这是一个文本视图,简单明了,但无论如何都添加了组指示器。有什么建议吗?我会尝试将convertview的背景更改为@drawable资源或颜色。下面是一篇讨论扩展标记控制的文章的链接。