Android 中的可扩展列表视图

2023-12-28

我有一个可扩展的 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);

我先回答第二个问题,因为第二个问题更简单。

问题是,当您设置自定义点击侦听器时,它会覆盖列表中的默认侦听器。

因此,您需要做的是首先检查子项数量。如果计数为零,则仅添加侦听器。

if ( getChildrenCount( groupPosition ) == 0 )
 convertView.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View arg0) {
                   Toast.makeText(_context, "No data available", Toast.LENGTH_SHORT).show();

                }
            });

现在,回到第一个问题。 我假设您有一个存储所有元素的数据集。在为可扩展列表视图创建适配器之前,请循环遍历数据集并删除所有没有任何子元素的元素。之后,从数据集创建适配器。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android 中的可扩展列表视图 的相关文章

随机推荐