Po wylogowaniu się z sekcji sectionList jest 20 pozycji; z jakiegoś powodu wszystkie oprócz ostatniego elementu są wprowadzane do sekcji Tablica. Czy ktoś może zobaczyć, co tu jest nie tak?
AKTUALIZACJA: Wysłałem całą kwestionowaną klasę; jest stosunkowo krótki. Pochodzi z aplikacji na Androida.
public class ItemAdapter extends ArrayAdapter<ItemObject> implements
SectionIndexer {
private HashMap<String, Integer> alphaIndexer;
private String[] sections;
private LayoutInflater inflater;
public ItemAdapter(Context context, ItemObject[] objects) {
super(context, R.layout.item_row_layout, objects);
inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
alphaIndexer = new HashMap<String, Integer>();
int size = objects.length;
for (int i = 0; i < size; i++) {
ItemObject it = objects[i];
String name = it.name;
String s = name.substring(0, 1);
s = s.toUpperCase();
if (!alphaIndexer.containsKey(s)) {
alphaIndexer.put(s, i);
}
}
Set<String> sectionLetters = alphaIndexer.keySet();
ArrayList<String> sectionList = new ArrayList<String>(sectionLetters);
Collections.sort(sectionList);
sections = new String[sectionList.size()];
sections = sectionList.toArray(new String[sectionList.size()]);
}
2 odpowiedzi
for (int i = 0; i < sectionList.size(); i++) {
sections[i] = sectionList.get(i);
}
for (int i = 0; i < sections.length - 1; i++) {
sections[i] = sectionList.get(i);
}
Dlaczego kopiujesz tablicę dwa razy tutaj? Dlaczego nie użyć Iterator
? Właściwie to, czego powinieneś naprawdę użyć, to ArrayList.toArray
do konwersji na String[]
, np.
sections = sectionList.toArray(new String[sectionList.size()]);
Dodatkowo możesz posortować klucze za pomocą TreeMap
zamiast HashMap
, po prostu wykonując TreeMap.keySet
...
Iterator zestawu zwraca klucze w kolejności rosnącej.
Myślę, że powodem tego jest warunek w pętli for i < sections.length - 1;
. Prawdopodobnie logujesz sections[i]
tylko w pętli for.
Podobne pytania
Nowe pytania
java
Java to język programowania wysokiego poziomu. Użyj tego tagu, jeśli masz problemy z używaniem lub zrozumieniem samego języka. Ten tag jest rzadko używany samodzielnie i jest najczęściej używany w połączeniu z [spring], [spring-boot], [jakarta-ee], [android], [javafx], [hadoop], [gradle] i [maven].