Listview仅删除最后一个日期

时间:2018-12-27 07:58:09

标签: android listview cardview

以下代码包含用于显示来自sqlite的数据的listview函数。

问题在于,无论我选择哪个数据,它都只会删除最后一个数据,而不会删除正在选择的数据。我该如何解决该问题?请帮忙。

谢谢。

Arealist.java

public class Arealist extends AppCompatActivity {

    public static ListView listView;
    public static ArrayList<Area> list;
    AreaListAdapter adapter = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_list);

        listView = (ListView) findViewById(R.id.listView);
        list = new ArrayList<>();
        adapter = new AreaListAdapter(this, R.layout.area_items, list);
        listView.setAdapter(adapter);            

        //get all data
        Cursor cursor = MainActivity.sqLiteHelper.getData("SELECT * FROM AREA");
        list.clear();
        while (cursor.moveToNext()) {
            int id = cursor.getInt(0);
            double area = cursor.getDouble(1);
            String date = cursor.getString(2);

            list.add(new Area(id, area, date));
        }

        adapter.notifyDataSetChanged();
}

2 个答案:

答案 0 :(得分:0)

似乎您的问题出在这行 MainActivity.sqLiteHelper.deleteData(Area.getId());

尝试一下

MainActivity.sqLiteHelper.deleteData(area.getId());

答案 1 :(得分:0)

将区域对象设为本地。

在删除按钮中将区域ID设置为标签,并在onClick()中获取它。

添加到getView()

 holder.btnDelete.setTag(area.getId());

添加OnClick()

final int areaId = view.getTag();

在AlertDialog中添加:

 MainActivity.sqLiteHelper.deleteData(areaId);