-1

果物、野菜、その他などのカテゴリでリストビューを表示したい。

果物

- アップル

- マンゴー

-- ぶどう

野菜

- タマネギ

- トマト

その他

- ベルト


CursorLoader を使用してカーソルに入ってくるデータは、

1 りんごの実

2 マンゴーフルーツ

3 ぶどうの実

4 タマネギ野菜

5 トマト野菜

6 その他のベルト


AlphabetIndexer 以外の解決策は見つかりませんでしたが、それは私の要件を満たしていません。誰でもそれを行う方法を知っていますか?? [注: isHeader のような別の列はありません]

4

1 に答える 1

2

SectionIndexer は、ロードされたデータを整理しません。理想的には、クエリまたはそれをサポートするコレクションを使用して、事前にそれを行っておく必要があります。SectionIndexer は単に、adapterView がサポートされているセクションのリストを照会する方法を許可し、セクションの開始場所、終了場所、セクションの位置を指定します。したがって、データが既にソートされていると仮定します。

次の実装で SectionIndexer を作成できます

@Override
public Object[] getSections() {
    return new CharSequence[] {"Fruit", "Vegetable", "Other"};
}

@Override
public int getSectionForPosition(int position) {
   String text = getItem(position);
   if (text.contains("Fruit") {
      return 0;
   } else if (text.contains("Vegetable") {
      return 1;
   } else {
      return 2;
   }
}

@Override
public int getPositionForSection(int section) {
   String sectionName = (String) getSections()[section];
   for (int i=0,length=getCount(); i < length; i++) {
     if (((String)getItem(i)).contains(sectionName)) {
          return i;
     }
   }
   return getCount();
}

参考までに、これは非常に遅いため、これらのメソッドによって要求された情報の多くをキャッシュおよびプリフェッチするデータをロードするたびに、インデックス構造を作成することをお勧めします。

于 2012-10-08T20:29:54.503 に答える