【问题标题】:Android ParseQueryAdapter notifyDataSetChanged does not workAndroid ParseQueryAdapter notifyDataSetChanged 不起作用
【发布时间】:2014-06-05 06:18:26
【问题描述】:

使用最新的 Parse 库 v1.5.1

感谢更新,我现在可以做到:

ParseQueryAdapter<ParseObject> mAdapter = new ParseQueryAdapter<ParseObject>(MainActivity.this, new ParseQueryAdapter.QueryFactory<ParseObject>() {
    @Override
    public ParseQuery<ParseObject> create() {

        ParseQuery<ParseObject> query = new ParseQuery<ParseObject>(ParseObject.class);
        query.fromLocalDatastore();

        return query;
    }
});
mListView.setAdapter(mAdapter);

现在我有一些固定的对象,它们显示正确,但是当我像这样取消固定它们时:

//Some ParseObject in the above adapter
object.unpinInBackground(new DeleteCallback() {
    @Override
    public void done(ParseException e) {
        if(e == null) {
            //I beleive this would be the correct approach.
            mAdapter.notifyDataSetChanged();
        }
    }
});

当然,我希望该项目从相应的ListView 中消失,但事实并非如此。但是假设我回到另一个活动并重新访问此活动,ListView 会正确显示而没有最近取消固定的对象。

这是一个错误吗?如果不是我做错了什么?

【问题讨论】:

    标签: android android-listview parse-platform android-adapter notifydatasetchanged


    【解决方案1】:

    我有同样的问题)我用调用方法 ParseQueryAdapter.loadObjects() 解决它。

    【讨论】:

      【解决方案2】:

      您可以在拨打notifyDataSetChanged();之前尝试mAdapter.remove(object)

      unpinInBackground 从数据库中删除对象。可能适配器有一个对象的本地副本。

      ParseQueryAdapter 中似乎没有 remove 方法。

      这是来自官方的回应:

      由于 ParseQueryAdapter 旨在始终显示 ParseQuery,您需要使用 API 请求来重新加载查询。

      https://www.parse.com/questions/delete-a-object-using-parsequeryadapter

      【讨论】:

      • 好的,我必须使用loadObjects() 重新运行查询。
      • 那你可能想接受我的回答,或者自己写并接受(将问题标记为已回答)。 :)
      • 我不相信它是 100% 正确的,假设我正在查看第二页上的一个项目并取消固定它,当我调用 loadObjects() 时,listView 将再次从顶部显示,导致奇怪的用户体验。
      猜你喜欢
      • 2016-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-24
      • 2014-03-03
      相关资源
      最近更新 更多