我正试图在我的导航抽屉中创建一个ExpandableListView,它具有其他不可扩展的选项。我试着创造如下的东西:
全是谷类食品。。。。。。。。。。。。V
存档的谷物。。。。。。V
设置
帮助和反馈
关于我们
“所有谷物”和“存档谷物”将有下拉指示符,因为它们是有孩子的组,而“设置”、“关于我们”等则没有指示符。我仔细研究了两种方法:修改适配器以膨胀空组的不同布局,以及在普通ListView上堆叠ExpandableListView。
修改适配器并不像我希望的那样可行,因为组指示符是自动附加的。我想不出如何使下拉指示器的自动连接消失。帮助?
将ExpandableListView堆在一个普通的ListView上也不像我所希望的那样可行,因为我无法让XML与一个DrawerLayout中的两个列表合作。帮助?
发布于 2015-07-07 23:50:05
如果这些是静态元素,那么实现类似于ViewItemType的东西可能不值得。您可以考虑将它们放在listview的footerView中。
尝试listview.addFooterView(视图);
发布于 2015-07-08 02:52:46
您的ExpandableListView将使用一个ExpandableListAdapter,其中包含一些方法,可以帮助您解决很多问题。您可以在这个链接http://developer.android.com/reference/android/widget/ExpandableListAdapter.html上阅读更多关于它们的信息。从一些位置没有展开开始,我过去所做的就是覆盖ExpandableListAdaptor中的ExpandableListAdaptor()方法。然后,要指定单击行为,可以通过重写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的视图。这样,你就可以完全控制它的外观。我希望这能帮到你。祝好运。
https://stackoverflow.com/questions/31281221
复制相似问题