ListView только последняя дата будет удалена - PullRequest
0 голосов
/ 27 декабря 2018

Следующий код состоит из функции просмотра списка для отображения данных из sqlite.

Проблема в том, что независимо от того, какие данные я выбрал, он будет удалять только последние данные, а не выбранные данные.Как я могу решить проблему?пожалуйста помоги.

Спасибо.

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 голосов
/ 27 декабря 2018

Сделать объект области локальным.

установить идентификатор области в кнопках удаления в качестве тега и получить его в onClick ().

Добавить в getView ()

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

Добавить в OnClick ()

final int areaId = view.getTag();

Добавить в AlertDialog:

 MainActivity.sqLiteHelper.deleteData(areaId);
0 голосов
/ 27 декабря 2018

Кажется, ваша проблема в этой строке MainActivity.sqLiteHelper.deleteData (Area.getId ());

Попробуйте с этим

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