Я следую отличному примеру кодирования здесь: Этот SO вопрос. Речь идет о реализации интерфейса SectionIndexer для адаптера массива.
Однако как бы вы сделали то же самое, если ваш ArrayAdapter передает ArrayList‹ MyObject > не ArrayList‹ String >?
Например, здесь мой код отличается от его кода. У него есть:
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) {
Там, где он передает один ArrayList, я должен передать три, но чтобы это произошло, мне пришлось обернуть его в пользовательский класс объектов. Один из ArrayList, которые я хочу отсортировать, является одним из трех полей в классе с именем «имя». Очевидно, это строка.
Я хочу прокрутить это в алфавитном порядке с помощью SectionIndex на основе этого поля имени. Как изменить пример кода из другого вопроса, чтобы он работал в этом сценарии?
Где у него "data.size()", мне нужно что-то вроде "name.size()" - я думаю?