【问题标题】:Getting Parse Row Wrong ObjectId获取解析行错误的 ObjectId
【发布时间】:2021-08-07 12:35:33
【问题描述】:

我有一个列表视图,其中包含 4 个对象。当我长按其中一个对象时,会打开一个带有“删除”选项的菜单,我可以删除该行。 但是,由于某种原因,我得到了错误的行 objetId,我无法弄清楚我做错了什么。

这就是我所做的:

创建上下文菜单:

public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
        super.onCreateContextMenu(menu, v, menuInfo);

        // Get the list
        feedListView = (ListView)v;


        // Get the list item position
        AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)menuInfo;

    int position = info.position;
    position -= feedListView.getHeaderViewsCount();
    int finalPosition = position;



        if (ParseUser.getCurrentUser().getUsername().equals(data.getUserName())){
            Log.e("Test","Same user + ObjectId = " + ((AdapterView.AdapterContextMenuInfo) menuInfo).position);

            if (v.getId()==R.id.feedListView) {
                MenuInflater inflater = getMenuInflater();
                inflater.inflate(R.menu.mymenu, menu);
            }

        }else{
            Log.e("Test","Not Your Post");
            Toast.makeText(this, "Its not your post", Toast.LENGTH_SHORT).show();
        }


    }

从上下文菜单中选择:

    if (item.getItemId() == R.id.deleteMenu){

        new AlertDialog.Builder(FeedActivity.this)
                .setTitle("Are you sure ?")
                .setMessage("Are you sure you want to delete this post?")


                .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {

                        ParseQuery<ParseObject> query = ParseQuery.getQuery("Feed");

                            objects.get(finalPosition).deleteInBackground(new DeleteCallback() {
                                @Override
                                public void done(ParseException e) {
                                    Log.e("Done","Item Deleted Successfully !!!");
                                    arrayList.remove(finalPosition);
                                    adapter.notifyDataSetChanged();
                                }
                            });


                            }
                        });



                    }
                })


                .setNegativeButton(android.R.string.no, new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.cancel();
                    }
                })


                .setIcon(android.R.drawable.ic_dialog_alert)
                .show();



    }

谢谢

【问题讨论】:

    标签: java android listview parse-platform contextmenu


    【解决方案1】:

    所以我通过添加以下两行来修复它:

    第一个:

    MyData Editdata = (MyData) adapter.getItem(position);
    

    MyData Editdata = (MyData) adapter.getItem(finalPosition);
    

    我添加的第二行是(我添加它是因为我的列表视图显示方式相同):

    query.orderByDescending("updatedAt");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-09-21
      • 1970-01-01
      • 1970-01-01
      • 2018-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多