-1

我相信这是一个非常常见的任务:
一个 GridView 被自定义布局作为项目膨胀。每个布局都包含一个图像和一个按钮。如果用户单击图像,则执行一个动作(例如显示图像)。
如果用户按下按钮 - 另一个操作(从 GridView 中删除项目)。
前者在 AdapterView.OnItemClickListener 的 onItemClick() 内部实现。
如何实现后者?

4

2 回答 2

0

我可以说的最简单的方法是将位置设置为视图的 TAG,然后在 onClick 方法中获取 TAG 值并将其转换为整数。(根据@sad1raf 的要求,我添加了我的评论作为答案!)

于 2013-05-12T03:21:16.227 回答
0

您可以创建一个自定义 ArrayAdapter 并将其放入 GridView。在删除对象后传递上下文和要调用的类。最重要的是传递一个数组,其中包含将用于填充所有单元格的数据(在您的情况下,是一个整数数组)。然后在里面

@Override
public View getView(int position, View convertView, ViewGroup parent)

你必须:

  • 打开数据库连接并获取数据
  • 创建一个对话框以更安全地删除数据
  • 按下按钮显示对话框

对于第二步,您可以执行以下操作:

    final AlertDialog.Builder builder = new AlertDialog.Builder(context);

    builder.setTitle("Warning");
    builder.setMessage("Are you sure you want to permanently delete the selected item?");
    builder.setCancelable(true);

    builder.setPositiveButton("Yes",new OnClickListener(){
        public void onClick(DialogInterface dialog, int id){
            dao.deleteEventData(item);
            MyUtility.startActivityNoAnimsClearTop(context, classToLaunch);
        }
    });

    builder.setNegativeButton("No", new OnClickListener(){
        public void onClick(DialogInterface dialog, int id){
            dialog.dismiss();
        }
    });  

在我的代码中,我使用 DAO 数据库连接,这是一种管理数据的好方法,但您可以放置​​删除图像所需的所有代码,而不是 dao.deleteEventData(item)。然后,当您按下按钮时,您会显示对话框。

    Button btnDeleteList = (Button)cell.findViewById(R.id.btnDeleteList);
    btnDeleteList.setOnClickListener(new View.OnClickListener() {           
        @Override
        public void onClick(View v) {
            builder.show();
        }
    });
于 2013-05-11T14:35:17.730 回答