最近業務需求中要用到RecyclerView 列表倒序排列,於是便研究了一下,並彙總
第一種: 在設置數據源的時候:
// 設置倒序
Collections.reverse(bean);
myViewHolder.tv.setText(bean.get(position));
第二種: Collections
Collections.sort(list);
System.out.println("list-》 默認排序後的狀態");
SortList.output(list);
第三種: 自定義Comparator比較對象,在setAdapter之前調用,Beans需要implements Comparator :
// 自定義比較器:假設是按書的價格排序
static class PriceComparator implements Comparator {
public int compare(Object object1, Object object2) {// 實現接口中的方法
Book p1 = (Book) object1; // 強制轉換
Book p2 = (Book) object2;
return new Double(p1.price).compareTo(new Double(p2.price));
}
}
//調用
Collections.sort(list, new PriceComparator()); // 根據價格排序
//示例:單獨比較
Comparator<Beans> itemComparator = new Comparator<Beans>() {
public int compare(Beans info1, Beans info2){
return info1.getAges().compareTo(info2.getAges());
}
};
Collections.sort(mProfileList, itemComparator);
第四種: RecyclerView的佈局是有LayoutManager控制的,而LinearLayoutManager就支持了倒序的功能,所以我們可以直接用:
setStackFromEnd(true);
setReverseLayout(true);
//示例:setAdapter之前使用
LinearLayoutManager layout = new LinearLayoutManager(this);
layout.setStackFromEnd(true);//列表再底部開始展示,反轉後由上面開始展示
layout.setReverseLayout(true);//列表翻轉
rView.setLayoutManager(layout);
第五種: 和listview一樣,size和position是相應的,只要用size來反轉數據即可,或者重寫adapter的getItem方法,改爲get(size-1-position)。
第六種: list增加數據源(這種不太推薦)
//顧名思義,添加到頭部數據
list.addFirst(item)