简体   繁体   中英

deleting a row in parse server?

the problem is the list item on which it is clicked does not get deleted but an item behind or in front of it gets deleted (for list2.get(d) or list2.get(d-1))how to get the item which is clicked to get deleted?)

 Intent intent=getIntent();
    k=intent.getStringExtra("this is a");
    list=(ListView)findViewById(R.id.listview);
    list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
            d=i;
            AlertDialog.Builder dialog=new AlertDialog.Builder(Main3Activity.this);
            dialog.setMessage("this is a");
            dialog.setPositiveButton("yes", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int l){
                    ParseQuery<ParseObject> b=new ParseQuery<ParseObject>("message");
                    b.findInBackground(new FindCallback<ParseObject>() {
                        @Override
                        public void done(List<ParseObject> objects, ParseException e)
                        {
                            if(e==null) {
                                for (ParseObject n : objects) {
                                    if (n.getString("message").equals(list2.get(d))&&(n.getString("receiver").equals(ParseUser.getCurrentUser().getUsername().toString())&&n.getString("sender").equals(k)))
                                    {
                                        try {
                                            Toast.makeText(Main3Activity.this,list2.get(d+1), Toast.LENGTH_SHORT).show();
                                            n.delete();
                                        } catch (Exception e1) {
                                            e1.printStackTrace();
                                        }
                                    }
                                }
                            }
                            else
                            {
                                Log.i("this is a",e.getMessage());
                            }
                        }
                    });
                    list2.remove(d);
                    a.notifyDataSetChanged();

this in this case refers to onItemClickListener context. You can either use application context by calling getApplicationContext() OR if you need local context, use CLASSNAME.this

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main3);
Intent intent=getIntent();
list=(ListView)findViewById(R.id.listview);
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
        AlertDialog.Builder dialog=new AlertDialog.Builder(getApplicationContext());

    }
});

OR

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main3);
Intent intent=getIntent();
list=(ListView)findViewById(R.id.listview);
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
        AlertDialog.Builder dialog=new AlertDialog.Builder(MainActivity.this);

    }
});

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM