我正在尝试在导航抽屉中创建一个ExpandableListView,它具有其他不可扩展的选项。我正在尝试创建类似下面的内容:
所有谷物。 。 。 。 。 。 。 。 。 。 。 。 V
存档的谷物。 。 。 。 。 。 V
设置
帮助和反馈
关于我们
“所有谷物”和“存档谷物”都有下拉指示器,因为它们是有孩子的组,而“设置”,“关于我们”等不会有指示器。我已经全神贯注地想到了两种方法:修改适配器以为空组扩展不同的布局,并且在普通ListView上堆叠ExpandableListView 。
修改适配器并不像我希望的那样可行,因为组指示器是自动附加的。我无法弄清楚如何使下拉指示器的自动附件消失。帮助
在普通的ListView上堆叠ExpandableListView也不像我希望的那样可行,因为我无法让XML与一个DrawerLayout中的两个列表配合。帮助
答案 0 :(得分:1)
如果这些是静态元素,那么实现类似于ViewItemType的东西可能不值得。您可以考虑将它们放在listview的footerView中。
尝试listview.addFooterView(view);
答案 1 :(得分:0)
您的ExpandableListView将使用ExpandableListAdapter,它将包含一些可以帮助您的方法。您可以通过此链接http://developer.android.com/reference/android/widget/ExpandableListAdapter.html了解更多相关信息。从一些不扩展的位置开始,我过去所做的是覆盖ExpandableListAdaptor中的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中扩展视图。这样,您可以完全控制它在任何情况下的外观。 我希望这有帮助。祝你好运。