アプリの目的は、ユーザーが下にスクロールして既存の ListView を更新するときに、より多くのデータを取得することです。
ユーザースクロールを処理するコードスニペットは次のとおりです。
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount,
int totalItemCount) {
int totalVisible = firstVisibleItem + visibleItemCount;
if (view.getAdapter() != null &&
(totalVisible >= totalItemCount) &&
totalItemCount != priorFirst &&
visibleItemCount != totalItemCount) {
Log.v("MyActivity", "onListEnd, extending list");
priorFirst = totalItemCount;
//params is array of values passed to business layer for data fetch
String[] params = builder.toString().split("&");
UIHandler uiHandler = new UIHandler(this, getParent());
//start async task
EnquiriesRunner enquiriesRunner = new EnquiriesRunner(uiHandler);
enquiriesRunner.execute(params);
}
バックグラウンドで、ビジネス層を呼び出します。
protected ExceptionHandler<Object> doInBackground(String... params) {
Object obj = enquiriesCaller.getEnquiries(params);
return new ExceptionHandler<Object>(obj);
}
結果のデータを UI ハンドラーに渡し、カスタム アダプターを使用して listView にレンダリングします。
ListView enquiryView = (ListView) ((Activity) childContext).findViewById(R.id.enquiryListView);
CustomAdapter adapter = new CustomAdapter(childContext, msg.obj);
enquiryView.setAdapter(adapter);
msg.obj は、オブジェクトにラップされた検索結果です。これは、アダプターで必要な POJO 参照にキャストされます。
ご覧のとおり、毎回 listView が新しいデータ セットに置き換えられます。誰かが既存のリストを更新するための可能な解決策を提案できますか?
前もって感謝します!