android ListView load more data

手機小小的,不可能ListView第一次長出來就呈現所有data
無論是要透過下拉刷新,或是其他操作模式去取得更多資料,都要該要能做到原始資料保持在ListView上,新資料往後append的效果。作法如下

ListView mListView;
MyAdapter mAdapter ;

第一次用
mListView.setAdapter(mAdapter);

第二次~第N次要append新資料
mAdapter.addAll(新資料);
mAdapter.notifyDataSetChanged();

絕對不要這樣寫
((MyAdapter) mListView.getAdapter()).addAll(新資料);
((MyAdapter)mListView.getAdapter()).notifyDataSetChanged();
因為(MyAdapter) mListView.getAdapter()取出來的並不是mAdapter,似乎是ListView的HeaderViewListAdapter
錯誤大概會是下列這類訊息
java.lang.ClassCastException: android.widget.HeaderViewListAdapter cannot be cast to MyAdapter


java的ArrayList排序

紀錄一下,在android常用到
例如最新的文章的排序要在最高層~

ArrayList myData = new ArrayList();

升冪 ascending
Collections.sort(myData, new Comparator() {
@Override
public int compare(News n1, News n2) {
return n1.Id - n2.Id;
}
});


descending 降冪
Collections.sort(myData,
Collections.reverseOrder(new Comparator() {
@Override
public int compare(News n1, News n2) {
return n1.Id - n2.Id;
}
}));