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