Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 从ParseQueryAdapter中删除项_Android_Listview_Parse Platform - Fatal编程技术网

Android 从ParseQueryAdapter中删除项

Android 从ParseQueryAdapter中删除项,android,listview,parse-platform,Android,Listview,Parse Platform,我对解析和Android开发有点陌生,所以如果这个问题是陈腐或烦人的,请原谅。我在Parse论坛上到处寻找从ParseQueryAdapter中删除项目的好方法,但没有找到任何令人满意的方法 我想要的是,当用户确认要删除/添加的项时,该项立即被删除/添加到ListView中,并在后台更新解析服务器。帮忙 final ParseUser currentUser = ParseUser.getCurrentUser(); final ParseQueryAdapter<ParseOb

我对解析和Android开发有点陌生,所以如果这个问题是陈腐或烦人的,请原谅。我在Parse论坛上到处寻找从ParseQueryAdapter中删除项目的好方法,但没有找到任何令人满意的方法

我想要的是,当用户确认要删除/添加的项时,该项立即被删除/添加到ListView中,并在后台更新解析服务器。帮忙

final ParseUser currentUser = ParseUser.getCurrentUser();

    final ParseQueryAdapter<ParseObject> mainAdapter =
            new ParseQueryAdapter<ParseObject>(this, new ParseQueryAdapter.QueryFactory<ParseObject>() {
                public ParseQuery<ParseObject> create() {
                    // Here we can configure a ParseQuery to our heart's desire.
                    ParseQuery query = new ParseQuery("todo");
                    //query.whereEqualTo("user", currentUser);
                    return query;
                }
            });
    mainAdapter.setTextKey("title");

    // Set the ListActivity's adapter to be the PQA

    final ListView list = getListView();
    list.setAdapter(mainAdapter);

    list.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                                int position, long id) {

            final int pos = position;

            new AlertDialog.Builder(thisactivity)
                    .setTitle("Confirmation Dialog")
                    .setMessage("Do you really want to delete it?")
                    .setIcon(android.R.drawable.ic_dialog_alert)
                    .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {

                        public void onClick(DialogInterface dialog, int whichButton) {
                            ParseObject toBeDeleted = mainAdapter.getItem(pos);
                            toBeDeleted.deleteInBackground();
                            mainAdapter.loadObjects();
                        }})
                    .setNegativeButton(android.R.string.no, null).show();
        }

    });

    final EditText todoName = (EditText)findViewById(R.id.todoName);

    Button adder= (Button) findViewById(R.id.addTodo);
    adder.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            addTodo(todoName.getText().toString(), currentUser);
            todoName.setText("");
            InputMethodManager mgr = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
            mgr.hideSoftInputFromWindow(todoName.getWindowToken(), 0);
            mainAdapter.loadObjects();
        }
    });

也许我能帮你解决这个问题。 以下拆卸程序:

private void delItem(Basket object) {
    final ParseItems finalitem = object.getParseItem();
    ParseQuery<Basket> query = Basket.getQuery();
    query.setMaxCacheAge(TimeUnit.SECONDS.toMillis(1));

    query.setCachePolicy(ParseQuery.CachePolicy.NETWORK_ELSE_CACHE);
    //query.fromLocalDatastore();
    query.whereEqualTo("parseItem", finalitem);
    query.whereEqualTo("user", ParseUser.getCurrentUser());
    query.whereNotEqualTo("sent", true);
    query.getFirstInBackground(new GetCallback<Basket>() {
        @Override
        public void done(final Basket basket, ParseException e) {
            if (basket != null) {
                basket.increment("quantity", -1);
                basket.saveEventually(new SaveCallback() {
                    @Override
                    public void done(ParseException e) {
                        SuperToast superToast = new SuperToast(context);
                        superToast.setDuration(SuperToast.Duration.VERY_SHORT);
                        superToast.setText("del: " + finalitem.getName() + "-1=" + basket.getQuantity());
                        superToast.setIcon(R.drawable.del, SuperToast.IconPosition.LEFT);
                        superToast.show();
                    }
                });
                if (basket.getQuantity() <= 0) {
                    basket.deleteEventually(new DeleteCallback() {
                        @Override
                        public void done(ParseException e) {
                            SuperToast superToast = new SuperToast(context);
                            superToast.setDuration(SuperToast.Duration.VERY_SHORT);
                            superToast.setText("remove: " + finalitem.getName());
                            superToast.setIcon(R.drawable.del, SuperToast.IconPosition.LEFT);
                            superToast.show();
                        }
                    });
                }
            }
        }
    });