0

我有一个 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);
    }

那么知道如何删除它吗?提前致谢

4

1 回答 1

1

该类JSONArray没有remove方法,因此尝试调用它jsonArray显然不起作用。如果没有看到您的适配器的完整代码,我会说您有两个选择:

  1. 将对象中的所有数据提取jsonArray到一个ArrayList(如果您有多个值,您可以使用一个简单的数据持有者类)并ArrayListJSONAdapter. 然后,您可以在单击 时Button通过删除 中的项目轻松地从列表中删除元素ArrayList

  2. 您也可以jsonArray像现在一样使用,然后保留对已删除行数以及应删除的确切行的引用。然后在您的适配器中,您将不得不重写getCountandgetItem方法以消除“已删除”行。因此,在这种情况下,您实际上不会删除行,您只会使它们显示为已删除。

我会选择选项一。

于 2012-11-11T09:59:07.773 回答