私は同じことを試みていました。私はKasperが述べたcurrentCharロジックを使ってやってみました。 listView()の呼び出しは必ずしも期待通りのものではないので、うまく動作しないようです。私のソリューションは次のようなものです:
XMLでは、可視性を持つTextViewを追加します。これはセパレータタグになります。
<TextView
style="?android:attr/listSeparatorTextViewStyle"
android:id="@+id/separator"
android:layout_width="fill_parent"
android:visibility="gone"
android:layout_height="wrap_content"
android:textColor="@android:color/white" />
注:私は、Android標準の区切り形式を使用します。もちろん、自分で作ることもできます。この方法は、以下の利点があり
if (separatorAtIndex[position]) {
holder.sectionHeader.setText(""+name.charAt(0));
holder.sectionHeader.setVisibility(View.VISIBLE);
} else {
holder.sectionHeader.setVisibility(View.GONE);
}
:
は、このような何かを行う)(最後にあなたがgetViewメソッドでこの
/**
* Method takes the alphabetically sorted ArrayList as argument
*/
private void assignSeparatorPositions(ArrayList<Items> items) {
separatorAtIndex = new boolean[items.size()];
char currentChar = 0;
for (int i=0; i< items.size(); i++) {
if (itemss.get(i).getName().charAt(0) != currentChar) {
separatorAtIndex[i] = true;
} else {
separatorAtIndex[i] = false;
}
currentChar = items.get(i).getName().charAt(0);
}
}
のような方法何かであなたにアダプタクラスをブール配列を追加します別のヘッダービューを追加した後にアイテムの新しい位置を追跡する必要はありません。
お役に立ちましたか?関連するhttp://stackoverflow.com/a/37101450/3496570 – Nepster