0

私は BaseExpandableListAdapter クラスを持っており、 getChildView() は数行しか返さなければなりません。ただし、もちろん null を返すとアプリがクラッシュし、可視性を GONE に設定するとリストに空白が作成されます。

そのため、ユーザーには各行にチェックボックスがあり、次にリストを開いたときにチェックボックスがオンになっていると、表示されません (ArrayAdapter から削除されたようですが、それはできません)。

良いオプションはありますか?

編集

@Override
public int getChildrenCount(int groupPosition) {
    int childrenCount = categories.get(groupPosition).size();
    SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(context);

    /** If the user wants to remove the completed items */
    if (settings.getBoolean("deleteCompletedItemsPref", false) == true) {
        for (int childPosition=0; childPosition<childrenCount; childPosition++) {
            if (categories.get(groupPosition).getItem(childPosition).isChecked()) {
                parent.removeViewAt(childPosition);
            }
        }
    }

    return childrenCount;
}

ここでグループの子を実行し、不要なビューを削除しようとしますが、AdapterView であるため、ここでビューを削除することはできません。

4

1 に答える 1

0

BaseExpandableListAdapterメソッドを実装している必要がありますgetChildrenCount()。カテゴリリスト(またはリストのコピー)のサイズを返すようにすることができます。

public int getChildrenCount(int groupPosition) {
        return categories.get(groupPosition).size();
    }

次に、チェックされている場合は子の位置を削除します(できればクリックリスナーで)。もちろん、それに応じてデータセットを調整する必要もあります。そうでない場合は、おそらくそれを配列リストにして、その中の同じ位置を削除します。

于 2012-12-06T23:19:27.577 に答える