簡體   English   中英

如何使用android中的AsyncTask更新列表視圖上的數據?

[英]How can I update the data on my listview using AsyncTask in android?

我是這里的新手,並且已經在網上(和stackoverflow上)搜索了答案,但我仍在努力使其工作。

我想做的是(1)使用異步任務用新的“帖子”更新我的列表-這樣,當我將新帖子下載到他們的android時,允許用戶繼續使用該應用程序。

我正在努力使更新任務正常工作,並且它可能與一個明顯的實現問題有關(或沒有)。

我所擁有的是(1)一個自定義列表(它允許“拉動刷新”-但如上所述,這是一個問題,它此時不刷新任何數據)。 (2)一個自定義的AsyncTask,理論上它將在主屏幕上為主列表填充更多帖子。

這是列表中的問題點:

listView.setOnRefreshListener(new PullToRefreshListView.OnRefreshListener(listView) {
        @Override
        public void onRefresh() {

            mylistAdapter.loadNewData(); //loads new data <-------------------

m_ptrlistView.postDelayed(new Runnable(){

                @Override
                public void run() {
                    m_ptrlistView.onRefreshComplete();
                }
            }, 2000);

////////////這是適配器中的函數“ loadNewData”

public void loadNewData(PullToRefreshListView List){

    //load new stuff
    new AsyncFetchMore(list).execute();

    // MANDATORY: Notify that the data has changed
    notifyDataSetChanged();

    return;
}

還有...我的asyncTask被擴展的實現

@Override
protected Object doInBackground() {

    try {
        //simulating a long task
        Thread.sleep(5000);
    } catch (InterruptedException e) {
        Log.d("Notes", "Thread failed to sleep");
    }

    //create dummy posts for testing
    for ( int i = 12; i < 24; i++ ) {
        Post pNewPost = new Post();
        pNewPost.setText("POST # " + i);
        m_alNewPosts.add(pNewPost);
    }

    return null;
}

///////////////////////////////

也許我正在處理所有錯誤。 我有疑問...但是我只是不知道下一步應該做什么,我在這里很迷路! 你能給我提示嗎?

看起來您沒有用異步任務返回的結果來處理任何事情。 但是在進行修復之前,請考慮使用加載程序-它們是異步的,並且是專門為您的目的而制作的-獲取用於Fragment / Activity的數據。 這是他們的文檔 如果您想實現它們,似乎您可能要進行大量的重構,但這很值得-正確的方法。 希望這可以幫助。

您在啟動異步線程(尚未填充數據)后立即調用notifyDataSetChanged()。 數據更新后,調用notifyDataSetChanged()。 在SDK的樣本目錄中查看ApiDemos中的示例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM