Android listview加載數據後沒有立即刷新的解決辦法

最近用到listview顯示從服務器拉取回來的json數據,主要是圖片和文字資源。

     Listview在加載完數據後,當我們需要ListView進行刷新的時候,我們需要調用Adapter.notifyDataSetChanged()來讓界面刷新。

 在程序中我也使用了這個方法,但是依然沒有加載後立即得到想要的效果。核心代碼如下:

    

  <span style="font-family:Microsoft YaHei;"> HotTopicBean hotTopicBean;
   for (int i = 0; i < jsonArray.size(); i++) {
        hotTopicBean = new HotTopicBean();
        jsonObject = jsonArray.getJSONObject(i);
        hotTopicBean.setPostId(jsonObject.getLong("postId"));  //帖子ID
        hotTopicBean.setUserimgUrl(jsonObject.getString("userPic"));
        hotTopicBean.setName(jsonObject.getString("username")); //icon地址
        String date = NetworkUtils.timeStamp2Date(jsonObject.getLong("updateTime").toString(), "yyyy-MM-dd HH:mm:ss");
        Log.i("date:", date);
        hotTopicBean.setTime(date);
        hotTopicBean.setHottitle(jsonObject.getString("postTitle"));
        hotTopicBean.setContent(jsonObject.getString("postContent"));
        hotTopicBean.setFabulousnum(jsonObject.getInteger("likeCount"));
        hotTopicBean.setCommentnum(jsonObject.getInteger("commentCount"));
        Log.i("hottopicData:", hotTopicBean.getContent() + hotTopicBean.getUserimgUrl() + " 點贊數:" + hotTopicBean.getFabulousnum() + "更新時間" + hotTopicBean.getTime());
        hotTopicBeansList.add(hotTopicBean);
    }</span>
這段代碼在getHotTopicDataByVolley()方法中

       

  <span style="font-family:Microsoft YaHei;font-size:14px;"> class SocketAsyncTask extends AsyncTask<String, Void, List<HotTopicBean>> {

        @Override
        protected List<HotTopicBean> doInBackground(String... params) {
//            return getJsonData(params[0]);  原版本- 使用的偉哥的數據
            return getHotTopicDataByVolley(params[0], hotTopicBeansList); //現版本,使用偉檳的數據
        }

        @Override
        protected void onPostExecute(List<HotTopicBean> result) {
            super.onPostExecute(result);
            // onPostExecute()裏面僅僅只負責通知數據改變,不要這裏加入setAdapter
//            hAdapter.notifyDataSetChanged();
        }

    }</span>

之前Adapter.notifyDataSetChanged()我是卸載onPostExcute()裏面。

後來我把它提到在數據加載完就立刻通知系統數據已經更新

<span style="font-family:Microsoft YaHei;font-size:14px;">for (int i = 0; i < jsonArray.size(); i++) {
        hotTopicBean = new HotTopicBean();
        jsonObject = jsonArray.getJSONObject(i);
        hotTopicBean.setPostId(jsonObject.getLong("postId"));  //帖子ID
        hotTopicBean.setUserimgUrl(jsonObject.getString("userPic"));
        hotTopicBean.setName(jsonObject.getString("username")); //icon地址
        String date = NetworkUtils.timeStamp2Date(jsonObject.getLong("updateTime").toString(), "yyyy-MM-dd HH:mm:ss");
        Log.i("date:", date);
        hotTopicBean.setTime(date);
        hotTopicBean.setHottitle(jsonObject.getString("postTitle"));
        hotTopicBean.setContent(jsonObject.getString("postContent"));
        hotTopicBean.setFabulousnum(jsonObject.getInteger("likeCount"));
        hotTopicBean.setCommentnum(jsonObject.getInteger("commentCount"));
        Log.i("hottopicData:", hotTopicBean.getContent() + hotTopicBean.getUserimgUrl() + " 點贊數:" + hotTopicBean.getFabulousnum() + "更新時間" + hotTopicBean.getTime());
        hotTopicBeansList.add(hotTopicBean);
    }</span>
<pre name="code" class="java"><span style="font-family:Microsoft YaHei;font-size:14px;">hAdapter.notifyDataSetChanged(); </span><pre name="code" class="java"><span style="font-family:Microsoft YaHei;font-size:14px;">即在getHotTopicDataByVolley()方法內部通知系統數據已經更新了,問題得到解決。</span>




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章