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;
}

ご覧のとおりTextView、すべてを作成しますが、フィルターのタイプが " " で終わらない場合は返したくありませんExportPin(最後の if ステートメントを参照してください)。

戻ることができずnull、空のリスト項目を返したくありません。

私のクラスではgetChildrenCount()getGroupCount()...

何か案は?

4

2 に答える 2

1

おそらく、データをアダプターに渡す前に (またはアダプター コンストラクターで) フィルター処理して、アダプターが既にフィルター処理されたデータのみを使用するようにする必要があります。

于 2013-06-04T07:42:04.047 に答える
1

公式ドキュメントによると、データのフィルタリングを担当するAdapterべきではありません。

Adapter オブジェクトは、AdapterView とそのビューの基になるデータとの間のブリッジとして機能します。Adapter は、データ項目へのアクセスを提供します。アダプターは、データ セット内の各アイテムのビューを作成する役割も果たします。

データを に配置する前にデータをフィルタリングする必要がありますCursor。その後、Adapterは必要なビューをレンダリングして、 内にデータを表示します。ListView

于 2013-06-04T07:49:30.577 に答える