Android列表视图内容更新

时间:2015-09-06 21:51:52

标签: java android listview parse-platform

我在我的Android应用程序中有一个需要更新的列表视图。一切正常,但内容每隔一段时间重新加载一次。例如,如果我重新加载内容一次,则调用notifyDataSetChanged(),但没有任何更改。在第二次刷新时,重新加载数据。我的第三次与第一次相同,等等......可能是什么问题?这是我的代码:

private class LoadMoreDataTask extends AsyncTask<Void, Void, Void>{

    @Override
    protected Void doInBackground(Void... params) {
        ParseQuery<ParseObject> likeQuery = ParseQuery.getQuery("Likes");
        likeQuery.whereEqualTo("username", ParseUser.getCurrentUser().getUsername());
        likeQuery.findInBackground(new FindCallback<ParseObject>() {
            public void done(List<ParseObject> likeList, ParseException e) {
                if (e == null) {
                    postList.clear();
                    try {
                        query = new ParseQuery<ParseObject>("Images");
                        query.orderByDescending("createdAt");
                        query.setLimit(limit += 20);
                        ob = query.find();
                        for (ParseObject num : ob) {
                            PostRow test1;
                            Like singleLike = new Like(true);
                            for (int i = 0; i < likeList.size(); i++) {
                                if (likeList.get(i).get("imgId").equals(num.getObjectId())) {
                                    isLiked = true;
                                    break;
                                } else {
                                    isLiked = false;
                                }
                            }
                            singleLike.setLikeStatus(isLiked);
                            ParseFile img = (ParseFile) num.get("img");
                            test1 = new PostRow(img.getUrl().toString(), (String) num.get("username"), num.getObjectId(), singleLike, num.getInt("likeCount"));
                            postList.add(test1);
                        }
                    } catch (ParseException e1) {
                        e1.printStackTrace();
                    }
                } else {
                    //error
                }
            }
        });
        return null;
    }

    @Override
    protected void onPostExecute(Void aVoid) {
        super.onPostExecute(aVoid);
        adapter.notifyDataSetChanged();
        int position = listViewPosts.getFirstVisiblePosition();
        View v = listViewPosts.getChildAt(0);
        int top = (v == null) ? 0 : v.getTop();
        listViewPosts.setSelectionFromTop(position, top);
    }
}

这是我调用异步任务的地方。它是一个onrefresh监听器,在另一个AsyncTask的onPostExecute方法中:

swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
        @Override
        public void onRefresh() {

            new LoadMoreDataTask().execute();
            swipeRefreshLayout.setRefreshing(false);
        }
    });

0 个答案:

没有答案