以下代码包含用于显示来自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();
}
答案 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);