Android - 每个项目有两个动作的GridView

时间:2013-05-11 12:03:55

标签: android gridview

我认为这是一项非常普遍的任务:
GridView使用自定义布局作为项目进行充气。每个布局都包含一个图像和一个按钮。如果用户点击图像,则执行一个动作(例如,显示图像) 如果用户按下按钮 - 另一个动作(从GridView中删除该项目) 前者在AdapterView.OnItemClickListener的onItemClick()内实现 如何实现后者?

2 个答案:

答案 0 :(得分: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();
        }
    });

答案 1 :(得分:0)

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