我有一个ListView,我使用JSONArray适配器使用自定义视图填充它。在每一行中,我都有一个删除该行的按钮,但我不知道该怎么做。
cancel.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
AlertDialog.Builder ad = new AlertDialog.Builder(context);
ad.setCancelable(false);
ad.setMessage("Are you sure?");
ad.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
//jsonArray.remove(position);
}
});
jsonArray.remove(position)
代表undefined for the type
和Cannot refer to a non-final variable position inside an inner class defined in a different method
我的适配器的开头是这样的:
class JSONAdapter extends BaseAdapter implements ListAdapter {
private final JSONArray jsonArray;
private final LayoutInflater mInflater;
private final Context context;
private Button pay, cancel;
public JSONAdapter(Context context, JSONArray jsonArray) {
this.jsonArray = jsonArray;
this.context = context;
mInflater = LayoutInflater.from(context);
}
所以我想如何删除它?提前致谢
答案 0 :(得分:1)
JSONArray
类没有remove
方法,因此尝试在jsonArray
上调用它显然不起作用。如果没有看到适配器的完整代码,我会说你有两个选择:
将jsonArray
对象中的所有数据提取到ArrayList
(如果您有多个值,可以使用简单的数据持有者类)并在ArrayList
中使用JSONAdapter
Button
。然后,当您通过移除ArrayList
中的项目点击jsonArray
时,您可以轻松地从列表中删除元素。
您也可以像现在一样使用getCount
,然后保留对已删除的行数以及应删除的确切行的引用。然后在您的适配器中,您必须重写getItem
和{{1}}方法以消除“已删除”的行。因此,在这种情况下,您实际上不会删除行,只是将它们显示为已删除。
我会选择第一选。