ここで素晴らしいコーディング例に従っています: This SO question . これは、配列アダプターへの SectionIndexer インターフェイスの実装に関するものです。
ただし、ArrayAdapter が ArrayList< String > ではなく ArrayList< MyObject > を渡している場合、どのように同じことを行うのでしょうか?
たとえば、これは私のコードが彼のコードと異なる場所です。彼は持っています:
class AlphabeticalAdapter extends ArrayAdapter<String> implements SectionIndexer {
private HashMap<String, Integer> alphaIndexer;
private String[] sections;
public AlphabeticalAdapter(Context c, int resource, List<String> data) {
alphaIndexer = new HashMap<String, Integer>();
for (int i = 0; i < data.size(); i++) {
String s = data.get(i).substring(0, 1).toUpperCase();
alphaIndexer.put(s, i);
}
// other stuff
}
そのforループを自分の状況に適応させるのに問題があります。私は彼のようにサイズを測ることができません。彼が上記を持っているところから、私のアダプターが始まります。
public class CustomAdapter extends ArrayAdapter<Items> implements
SectionIndexer {
public ItemAdapter(Context context, Items[] objects) {
彼が 1 つの ArrayList を渡しているところに、私は 3 つ渡さなければなりませんが、それを実現するには、カスタム オブジェクト クラスでラップする必要がありました。並べ替えたい ArrayLists の 1 つは、"name" というクラスの 3 つのフィールドの 1 つです。明らかに文字列です。
その名前フィールドに基づいて、SectionIndex でアルファベット順にスクロールしたいと思います。このシナリオで動作するように、他の質問のコード例を変更するにはどうすればよいですか?
彼が「data.size()」を持っているところに、「name.size()」のようなものが必要だと思いますか?