2011-11-24 110 views
2

有沒有人看到一個Android的例子加載更多json數據作爲用戶向下滾動頁面?我已經看到了各種使用靜態數組的示例並通過添加計數器來生成文本,但我正在尋找一個使用json數據的示例,因此它載入了一些記錄,然後當用戶向下滾動時,它會載入更多的數據等等。在ListView中加載更多json數據

回答

2

寫一個適配器列表項,並添加一個方法來追加新成果

public class JsonListAdapter extends BaseAdapter { 

    private List<JSONObject> list; 

    public void appendList(List<JSONObject>pList) { 
     if (list== null) { 
      list= new List<JSONObject>(); 
     } 
     if (pList != null) { 
      list.addAll(pList); 
      notifyDataSetChanged(); 
     } 
    } 
... 
} 

添加滾動監聽器啓動尋呼請求

private class PagingScrollListener implements OnScrollListener { 

    private int lastOffset = 0; 


    @Override 
    public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { 
     boolean isEndOfListReached = firstVisibleItem + visibleItemCount >= totalItemCount; 
     boolean isOffsetRequested = lastOffset >= totalItemCount; 

     if (isEndOfListReached && !isOffsetRequested) { 
      lastOffset = totalItemCount; 
      new PagingRequest(myListAdapter).execute(lastOffset); 
     } 
    } 
... 
} 

負載下一批數據,並更新適配器:

private static class PagingRequest extends AsyncTask<Integer, Void, List<JSONObject> { 

    private JsonListAdapter mAdapter; 

    public PagingRequest(JsonListAdapter adapter) { 
     this.mAdapter = adapter; 
    } 

    protected ProductList doInBackground(Integer... params) { 
     int offset = params[0]; 
     // PERFORM REQUEST WITH OFFSET 
     return newResults; 
    } 

    protected void onPostExecute(List<JSONObject> result) { 
     mAdapter.appendList(result); 
    } 
} 

聲明:這只是基本策略,您仍然需要填寫空白並適應您的代碼。

+0

謝謝你,但我正在尋找一個完整的例子 - 即一個eclipse項目 - 許多人聲稱做到這一點,但要麼不使用JSON數據或做但不要在底部實施「加載更多」鏈接他們只是加載所有的JSON數據,如果你有10,000行,這是很多吞嚥... – ITECH

+0

你做這個工作完成_i得到同樣的問題 – sara