Android 单击鼠标右键可在gridview中绘制项目(已编辑)

Android 单击鼠标右键可在gridview中绘制项目(已编辑),android,onclicklistener,android-drawable,Android,Onclicklistener,Android Drawable,如何执行右可绘制的Onclick功能? 我有一个gridview项目列表,其中我为每个项目设置了一个右可绘制项,这样当用户在editText中输入某个内容时,右可绘制项将显示在背景中,并且可绘制项是删除图标,所以我只想对该可绘制项执行onClick listener,这样当用户点击该删除可绘制项时,就可以执行操作。我编写了以下代码,但它不起作用 keywordslist.setOnTouchListener(new OnTouchListener() { @Override pu

如何执行右可绘制的Onclick功能? 我有一个gridview项目列表,其中我为每个项目设置了一个右可绘制项,这样当用户在editText中输入某个内容时,右可绘制项将显示在背景中,并且可绘制项是删除图标,所以我只想对该可绘制项执行onClick listener,这样当用户点击该删除可绘制项时,就可以执行操作。我编写了以下代码,但它不起作用

keywordslist.setOnTouchListener(new OnTouchListener() {
    @Override
    public boolean onTouch(final View v, MotionEvent event) {
        if(event.getAction() == MotionEvent.ACTION_UP) {
            if(event.getRawX() >= (keywordslist.getRight() - keywordslist.getPaddingRight())) {
                new AlertDialog.Builder(context)
                .setMessage("Remove " + ((TextView) v).getText().toString() + "?")
                .setNeutralButton("No", null)
                .setPositiveButton("Yes", new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        DBkeyword dbkey = new DBkeyword(context);
                        SQLiteDatabase dbw = dbkey.getWritableDatabase();
                        String deleteKeyword = "delete from " + "screenedkeywords" + " where " + "keywords" + " = \"" + ((TextView) v).getText().toString() + "\"";
                        dbw.execSQL(deleteKeyword);
                        dbw.close();
                        DisplayKeywords();

                    }
                });

             return true;
            }
        }
        return false;
    }
});

您必须通知适配器数据已更改

customGridAdapter.notifyDataSetChanged();

我不是百分之百确定,但是否应该有一个

ArrayAdapter.getItemCount()

可能您没有将返回值从0更改为data.size()。

正如我所说,数据正在数据库中添加,但它没有显示在屏幕上,notifyDataSetChanged与此无关。首先,如果您的数据库已更新,那么您还必须更新screenedKeyWords arraylist,因为数据库中的任何项目都已更改。然后,如果arraylist已更改,则必须通知适配器。第二件事..阅读关于NotifyDataSetChange的内容,它的作用是什么?先生,让我试试这个