我有一个可扩展的 ListView,但我面临两个问题。
Q1.如果标题不包含任何子项,我想将其隐藏/从列表中删除。
为此,我有内部 getGroupView 方法。
if ( getChildrenCount( groupPosition ) == 0 )
{
convertView.setVisibility(View.GONE);
}
假设我有 10 个标头,标头 3,5 和 8 没有任何子标头。当我使用上面的代码时,它隐藏了第 3、5、8 个标题,但问题是它在那里留下了空白,而且它看起来不像一个列表。那么你知道如何让它看起来像一个列表吗?
Q2。当标题没有任何子项时,我想显示一条 toast 消息,指出“数据不可用”。为此,我在 getGroupView 方法中使用了以下代码,
convertView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
if ( getChildrenCount( groupPosition ) == 0 )
Toast.makeText(_context, "No data available", Toast.LENGTH_SHORT).show();
}
});
这显示了 toast 消息,但这里的问题是 - 当我单击具有子项的标题时,它们不会展开。如何解决这个问题呢?
这是填充数据集的代码
listDataHeader = new ArrayList<String>();
listDataChild = new HashMap<String, List<String>>();
listDataHeader.add(dayName_first);
listDataHeader.add(dayName_second);
listDataHeader.add(dayName_third);
listDataHeader.add(dayName_fourth);
listDataHeader.add(dayName_fifth);
listDataHeader.add(dayName_sixth);
listDataHeader.add(dayName_seventh);
firstDay = checkEmpty(firstDay); // Function to check whether the list is empty or not. Do I need to check each list here and add or somewhere else?
listDataChild.put(listDataHeader.get(0), firstDay);
listDataChild.put(listDataHeader.get(1), secondDay);
listDataChild.put(listDataHeader.get(2), thirdDay);
listDataChild.put(listDataHeader.get(3), fourthDay);
listDataChild.put(listDataHeader.get(4), fifthDay);
listDataChild.put(listDataHeader.get(5), sixthDay);
listDataChild.put(listDataHeader.get(6), seventhDay);
listAdapter = new StaffExpandableListAdapter(this, listDataHeader,
listDataChild);
llExpandable.invalidateViews();
llExpandable.setAdapter(listAdapter);