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