2

ListView従来のアルファベットとは別に、カスタムセクションヘッダーをヘッダーとして表示するセクションを使用して実装しています。カスタムを正しく実装するために、2つの方法とSectionIndexerの違いを理解したいと思います。getSectionForPositiongetPositionForSection

getSectionForPositionセクションヘッダーに表示したいアルファベットが返されることを理解しています(それが正しいかどうかはわかりません) 。

他の方法がわかりません。また、それらは何らかの意味で類似していますか(あるとしても)、どのように異なっていますか(そうである場合、私は彼らがそうしていると思います:))

これを理解している人は誰でもこれに対する答えを投稿してください。質問に答える時間を感謝します。

アップデート:

この公式ページのドキュメントを確認しました; SectionIndexカスタム実装に関する詳細な洞察を探しています

4

3 に答える 3

5

getPositionForSection(section)インデックス付きカラムのカーソル データがセクションで始まる最初の位置を返します。

たとえば、セクション B のインデックスが 1 で、カーソルのインデックス付き列に次のデータがある場合

Position        Data               getSectionForPosition(position)

_________       __________         ______________________________

0               Abhfdf              0

1               Achahtkh            0

2               Ahtjlarej           0

3               Bchatkd             1

4               Bjklhdsfoi          1

5               Bzhafdlsfk          1

6               Cj fadsfkj          2

その後、getPositionForSection(1)3 を返します

6もgetPositionForSection(2)返します

これがお役に立てば幸いです

于 2012-09-17T10:45:42.243 に答える
1

これが私が作成したサンプル実装です。おそらく、SectionIndexer が少し明確になります。

データを保持するために、プライベート内部クラスを使用できます。

private class Item {
    public int sectionNumber;

    public Long id;
    public String name;
}

private class Section {
    public int startPosition;

    public String header;

    @Override
    public String toString(){
        return header;
    }
}

アイテム用のリストとセクション用のリストを使用します。

private List<Item> items = new ArrayList<Item>();
private List<Section> sections = new ArrayList<Section>();

SectionIndexer のリスト アダプターでの実装は、次のようになります。

@Override
public int getPositionForSection(int sectionNumber) {
    return sections.get(sectionNumber).startPosition;
}

@Override
public int getSectionForPosition(int itemPosition) {
    return items.get(itemPosition).sectionNumber;
}

@Override
public Object[] getSections() {
    return sections.toArray();
}

もちろん、アダプタのデータ リストを埋めるメソッドを実装する必要があります。

于 2013-02-27T10:25:39.170 に答える
0

このメソッドgetPositionForSection(int section)は、リスト内の開始インデックスを返します。section

メソッドgetSectionForPosition(int position)は、アイテムを含むセクションのインデックスを返します。position

于 2012-09-17T10:42:56.483 に答える