首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有不可扩展项的ExpandableListView

具有不可扩展项的ExpandableListView
EN

Stack Overflow用户
提问于 2015-07-07 23:38:35
回答 2查看 1.9K关注 0票数 4

我正试图在我的导航抽屉中创建一个ExpandableListView,它具有其他不可扩展的选项。我试着创造如下的东西:

全是谷类食品。。。。。。。。。。。。V

存档的谷物。。。。。。V

设置

帮助和反馈

关于我们

“所有谷物”和“存档谷物”将有下拉指示符,因为它们是有孩子的组,而“设置”、“关于我们”等则没有指示符。我仔细研究了两种方法:修改适配器以膨胀空组的不同布局,以及在普通ListView上堆叠ExpandableListView。

修改适配器并不像我希望的那样可行,因为组指示符是自动附加的。我想不出如何使下拉指示器的自动连接消失。帮助?

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

EN

回答 2

Stack Overflow用户

发布于 2015-07-07 23:50:05

如果这些是静态元素,那么实现类似于ViewItemType的东西可能不值得。您可以考虑将它们放在listview的footerView中。

尝试listview.addFooterView(视图);

票数 2
EN

Stack Overflow用户

发布于 2015-07-08 02:52:46

您的ExpandableListView将使用一个ExpandableListAdapter,其中包含一些方法,可以帮助您解决很多问题。您可以在这个链接http://developer.android.com/reference/android/widget/ExpandableListAdapter.html上阅读更多关于它们的信息。从一些位置没有展开开始,我过去所做的就是覆盖ExpandableListAdaptor中的ExpandableListAdaptor()方法。然后,要指定单击行为,可以通过重写getGroupViewMethod来完成。您的适配器可能如下所示:

代码语言:javascript
复制
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的视图。这样,你就可以完全控制它的外观。我希望这能帮到你。祝好运。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31281221

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档