从ListView中删除DB中的项目

问题描述 投票:1回答:1

我滚动了很多问题,但我没有忘记或只是找到了非特定的答案。

所以我得到了一个SQLite数据库并在ListView中显示它的内容。我提取数据库的内容并将其显示为字符串。现在,如果我点击其中一个项目,我想从数据库中删除它。所以我发现我必须使用OnItemClick适配器。但是,如何获取我单击的项目以及ListView中String后面的对象,然后将其传递给数据库以删除它?

Greatings

这是我在ListView中显示数据的方法

  List<TaskData> TaskList = datasource.getAllTasks();
    //Daten werden im ArrayAdapter gespeichert
    ArrayAdapter<TaskData> TaskListArrayAdapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_multiple_choice, TaskList);

    ListView TaskDataListView = (ListView) findViewById(R.id.TaskListView);
    TaskDataListView.setAdapter(TaskListArrayAdapter);
    TaskDataListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            datasource.open();
            datasource.deleteTask();
            datasource.close();
        }
    });
}

这是我的TaskData类

public class TaskData {
public long id;
public String type;
public String name;
public String owner;
public String expiration;

public TaskData(long id, String type, String name, String owner, String expiration) {
    this.id = id;
    this.type = type;
    this.name = name;
    this.owner = owner;
    this.expiration = expiration;
}

public String toString() {
    return " Typ: " + type + " Name: " + name + " Owner: " + owner + " Until: " + expiration;
}
public long getId(){return id;}

}

android sqlite listview
1个回答
1
投票

onItemClick方法中,位置将是被点击项目的位置。这相当于单击的Tasklist的索引(元素)。

所以你可以使用long clickedid = TaskList.get(position).getId();,这将检索任务的id。

或者假设deleteTask方法使用id来标识要删除的行,然后: -

        datasource.deleteTask(TaskList.get(position).getid());
© www.soinside.com 2019 - 2024. All rights reserved.