1

我有一个扩展BaseExpandableListAdapter的类:

public View getChildView(int groupPosition, int childPosition, boolean isLastChild,
        View convertView, ViewGroup parent) {
    Filter filter = (Filter) getChild(groupPosition, childPosition);
    if (convertView == null) {
        LayoutInflater infalInflater = (LayoutInflater) context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = infalInflater.inflate(R.layout.exp_list_child, null);
    }
    TextView tv = (TextView) convertView.findViewById(R.id.child_tv);
    tv.setText(filter.toString());



    tv = (TextView) convertView.findViewById(R.id.child_sub_tv);
    tv.setText(filter.getType());

    if(!filter.getType().endsWith("ExportPin"))
        // I dont want to return antyhing

    return convertView;
}

如您所见,我创建了所有内容,但如果过滤器的类型不以“ ”结尾(请参阅最后的 if 语句),TextView我不想返回它。ExportPin

我无法返回null,也不想返回空列表项。

在我的课上,我也有getChildrenCount()getGroupCount()...

有任何想法吗?

4

2 回答 2

1

也许您应该在将数据传递给适配器之前(或在适配器构造函数中)过滤数据,以便适配器仅使用已过滤的数据。

于 2013-06-04T07:42:04.047 回答
1

根据官方文档,不Adapter应该负责过滤数据:

Adapter 对象充当 AdapterView 和该视图的基础数据之间的桥梁。适配器提供对数据项的访问。Adapter 还负责为数据集中的每一项创建一个 View。

您必须先过滤您的数据,然后再将它们放入您的Cursor,然后Adapter将呈现所需的视图以显示其中的数据ListView

于 2013-06-04T07:49:30.577 回答