程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程解疑 >> 線程-AsynTask中怎麼返回數據填充到ListView中

線程-AsynTask中怎麼返回數據填充到ListView中

編輯:編程解疑
AsynTask中怎麼返回數據填充到ListView中

我調用新浪微博的SDK,其中調用官方的APT方法--userTimelineIds獲取微博ID,官方方法如下:
/**
* 獲取用戶發布的微博的ID
*
* @param uid 需要查詢的用戶ID
* @param since_id 若指定此參數,則返回ID比since_id大的微博(即比since_id時間晚的微博),默認為0
* @param max_id 若指定此參數,則返回ID小於或等於max_id的微博,默認為0
* @param count 單頁返回的記錄條數,默認為50
* @param page 返回結果的頁碼,默認為1
* @param base_app 是否只獲取當前應用的數據。false為否(所有數據),true為是(僅當前應用),默認為false
* @param featureType 過濾類型ID,0:全部、1:原創、2:圖片、3:視頻、4:音樂,默認為0
*

{@link #FEATURE_ALL}
* {@link #FEATURE_ORIGINAL}
* {@link #FEATURE_PICTURE}
* {@link #FEATURE_VIDEO}
* {@link #FEATURE_MUSICE}
* @param listener 異步請求回調接口
*/
public void userTimelineIds(long uid, long since_id, long max_id, int count, int page, boolean base_app,
int featureType, RequestListener listener) {
WeiboParameters params = buildTimeLineWithApp(since_id, max_id, count, page, base_app, featureType);
params.put("uid", uid);
requestAsync(SERVER_URL_PRIX + "/user_timeline/ids.json", params, HTTPMETHOD_GET, listener);
}
    可以看出是用了AsynTask實現的異步回調。但是具體的requestAsync被新浪封裝,無法查看和修改。

    在我自己的Activity中調用如下:
    /**
     * 通過登錄的用戶id獲取其發過的所有微博id
     */
    mStatuseAPI.userTimelineIds(uid, 0L, 0L, 50, 1, false,
            StatusesAPI.FEATURE_ALL, 
            new RequestListener() {   //異步回調就是發起請求後,不等待響應就先去處理自己的響應

                @Override
                public void onWeiboException(WeiboException error) {
                    // TODO Auto-generated method stub
                    //出錯就打印出錯信息
                    error.printStackTrace();
                }

                @Override
                public void onComplete(String result) {
                    // TODO Auto-generated method stub
                    Log.i(TAG, result);

                    //當括號內參數為(null)或者("")時,返回true,此方法既可以判斷字符串也可以判斷對象
                    if(!TextUtils.isEmpty(result)){
                        getWbList(result);
                    }else{
                        Log.i(TAG, "獲取不到微博ID或者此用戶沒有發過微博");
                    }

                }
            });

這裡onComplete方法返回的result是在異步回調線程中的,請問怎麼將數據拿到Activity中。這裡由於requestAsync無法查看和修改。就不能重載AsynTask裡的onPostExcate()方法傳回結果。
請問該怎麼在主線程中拿到數據?

最佳回答:


http://www.educity.cn/wenda/177222.html

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved