我一直在尋找如何在listView中使用SectionIndexer日期的方法。我想在快速滾動列表時顯示「短日期」。幾年前,我看到一個帖子提到一個人說他有工作,他有一個不同的問題,但遺憾的是他沒有爲他的方法發佈任何代碼。如何在日期中使用SectionIndexer
我想我將不得不對我的自定義ArrayAdapter做些什麼,但我不確定是什麼,任何人有任何想法,我可以尋找這樣的東西?
感謝, -Eric
我一直在尋找如何在listView中使用SectionIndexer日期的方法。我想在快速滾動列表時顯示「短日期」。幾年前,我看到一個帖子提到一個人說他有工作,他有一個不同的問題,但遺憾的是他沒有爲他的方法發佈任何代碼。如何在日期中使用SectionIndexer
我想我將不得不對我的自定義ArrayAdapter做些什麼,但我不確定是什麼,任何人有任何想法,我可以尋找這樣的東西?
感謝, -Eric
好吧,這就是我最終要做的,以防萬一其他人在尋找類似的東西。
private class TransactionAdapter extends ArrayAdapter<Transaction> implements SectionIndexer
{
private ArrayList<Transaction> items;
private Context context;
LinkedHashMap<String, Integer> dateIndexer;
String[] sections;
public TransactionAdapter(Context context, int textViewResourceId, ArrayList<Transaction> items)
{
super(context, textViewResourceId, items);
this.context = context;
this.items = items;
this.dateIndexer = new LinkedHashMap<String, Integer>();
int size = items.size();
String prDate = " ";
for (int x = 0; x < size; x++)
{
Transaction tr = items.get(x);
Calendar date = tr.getDate();
String month = date.getDisplayName(Calendar.MONTH, Calendar.SHORT, Locale.getDefault());
String year = String.valueOf(date.get(Calendar.YEAR));
String shortDate = month + " " + year;
if(!shortDate.equals(prDate))
{
this.dateIndexer.put(shortDate, x);
prDate = shortDate;
}
}
Set<String> sectionDates = this.dateIndexer.keySet();
// create a list from the set to sort
ArrayList<String> sectionList = new ArrayList<String>(sectionDates);
this.sections = new String[sectionList.size()];
sectionList.toArray(this.sections);
}
public int getPositionForSection(int section)
{
return dateIndexer.get(this.sections[section]);
}
public int getSectionForPosition(int position)
{
return 0;
}
public Object[] getSections()
{
return this.sections;
}
}
我找到了答案在兩個地方的組合:
本教程幫我初步實現了SectionIndexter的:Android ListView with fastscroll and section index
這篇文章固定的問題,我有隨着HashMap改變我的數組排序,它建議使用LinkedHashMap來代替。 is the Java HashMap keySet() iteration order consistent
可以使用this庫。這是適用於Android ListView的最簡單部分適配器。它適用於你已有的列表適配器。沒有項目特定的依賴關係。只需將最新的jar或源文件添加到您的Android項目中即可。
感謝您的回覆和鏈接。它像廣告中那樣工作,但並不完全符合我的要求。我真的不希望像我的數據庫中顯示的數據中斷,我真正想要的只是快速滾動選項,就像使用字母索引器時顯示的那樣,但顯示短日期(2012年1月,2012年2月等)。在默認的字母索引器中,當用戶使用拇指滾動時,它會彈出一個浮動的「A」,「B」,「C」等。像這樣的事情可以用你的圖書館完成,沒有使用佈局頁眉的中斷? – Eric