Android sqlite 从 ListView 中删除

标签 android sqlite

我在从 ListView (和数据库)中删除项目时遇到问题。到目前为止,我已经按照这个例子: http://www.vogella.com/articles/AndroidSQLite/article.html但我不喜欢那里的删除(总是删除第一个的按钮)。

这是我的 Activity 课:

public class FirstActivity extends ListActivity {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_1);

    final ShoppingSQL shoppingSQL = new ShoppingSQL(this);
    List<ShoppingData> list = shoppingSQL.getAll();

    ArrayAdapter<ShoppingData> adapter = new ArrayAdapter<ShoppingData>(
            this, android.R.layout.simple_list_item_1, list);
    setListAdapter(adapter);

    this.getListView().setLongClickable(true);
       this.getListView().setOnItemLongClickListener(new OnItemLongClickListener() {
            public boolean onItemLongClick(AdapterView<?> parent, View v, int position, long id) {
                Log.w("DELETED", " DELETED");
                shoppingSQL.delete((int)id);
                return true;
            }
        });     

}

protected void onListItemClick(ListView l, View v, int position, long id) {
    super.onListItemClick(l, v, position, id);
    Log.w("CLICKED", "CLICKED");
}

如您所见,我设置了长按的监听器以及需要 ID 的删除方法。问题与 ID 相关,我目前给它的似乎只是订单号 (0, 1, 2, 3) - 而不是数据库中的实际 ID。那么,我的问题是如何获得真实 ID?

最佳答案

您可以通过以下方式获取您的购物数据ID

this.getListView().setOnItemLongClickListener(new OnItemLongClickListener() {
            public boolean onItemLongClick(AdapterView<?> parent, View v, int position, long id) {
                Log.w("DELETED", " DELETED");

                //here You can get your id by 

                list.get(position).getID();

                //getID id the getter method of shoppingdata ,here you can declare your method for ID as whatever you have in shopping data
                shoppingSQL.delete((int)list.get(position).getID());
                return true;
            }
        });    

用于删除项目

adapetr.remove(list.get(i)); 然后在 ListView 上调用 notifydatasetchanged

关于Android sqlite 从 ListView 中删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14433142/

相关文章:

sqlite - 没有这样的表 - Expo 中的 SQLite react 原生项目

c# - 将字符串和文件从 Android 客户端发送到 C# 服务器

java - Android Studio Gradle单元测试不起作用

java - Alljoyn 框架 - Java - 信号。 BUS_NO_SUCH_INTERFACE

python - 将列表插入单个 sqlite 数据库列

java - 如何sqlite + listview + onListItemClick启动新的Activity?光标读取错误

android - 使用开发人员有效负载在应用程序购买中验证 android

android - 为什么设置android :background on a Button cause loss of L/R padding?

c - 如何使用 sqlite 在 C 语言中激活外键?

security - 安全的只读sqlite3数据库