【问题标题】:How to delete item from list and from database in android?如何从android中的列表和数据库中删除项目?
【发布时间】:2011-10-16 14:32:17
【问题描述】:

关于如何从列表中删除项目有很多问题,但我找不到我要找的那个。
所以基本上,我有一个列表和数据库,如何从列表和数据库中删除?
因为我的列表是从ArrayList<String> 填充的,所以一项只是字符串。例如,我的列表中有两个项目,例如 - 1.John,Doe 2.Jane,Doe
我如何获得这些项目的 ID?
如果我使用此代码并通过单击项目检查 id:

listView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

Toast.makeText(getApplicationContext(),
    Long.toString(parent.getItemIdAtPosition(position)) , 
    Toast.LENGTH_SHORT).show();  }});

它显示 0 或 1,但不显示 1 或 2。(这很合乎逻辑)
所以是的,我如何获得这些物品的ID?我现在能想到的唯一选择是获取列表项的前两个或三个字符并将它们转换为 int 并传递给我的 SQL 语句,然后我从数据库中删除相应的项目。
也许有人有更好的想法?

已编辑:

private void getAllData()
{
    cursor = myDataBase.rawQuery("SELECT * FROM " +
            MY_TABLE, null);

    if (cursor != null)
    {
        if (cursor.moveToFirst())
        {
            do
            {
                int id = cursor.getInt(cursor.getColumnIndex("Id"));
                String persName = cursor.getString(cursor.getColumnIndex("Name"));
                String persSurname= cursor.getString(cursor.getColumnIndex("Surname"));
                results.add("" + id + ", " + persName + ", " + persSurname);
            } while (cursor.moveToNext());
        }
        cursor.close();
    }
}

resultsprivate List&lt;String&gt; results = new ArrayList&lt;String&gt;(); 我希望这就是你要问的。

【问题讨论】:

  • 我能看到一些代码,说明您是如何从数据库中检索数据的,以及如何将您想要的 String 对象放入适配器中?
  • @Pzanno 在我的帖子中添加了代码。
  • 是的,这正是我想要的。我已经发布了一个适合您的答案,还建议您使用SimpleCursorAdapter 来获取您可能从数据库中创建的未来列表。

标签: android database list


【解决方案1】:

您可能应该从 SimpleCursorAdapter 类扩展,而不是您目前正在做的只是传递 String 对象。这个example 应该可以帮助您开始将数据放入适配器。

但是,如果您只想修改当前正在执行的操作,我建议您执行以下操作。除了您的 ArrayList&lt;String&gt; results 之外,我还会创建一个额外的对象 ArrayList&lt;Integer&gt; resultsIds 来保存每个项目的 ID。

results.add("" + id + ", " + persName + ", " + persSurname);
resultsIds.add(id);

然后在您的点击监听器中执行以下操作:

 @Override
protected void onListItemClick(ListView listView, View view, int position, long id) {
    super.onListItemClick(listView, view, position, id);
    int id = resultsIds.get(position); // this is the id for the item in the database you want to delete
    // now with your myDataBase SqliteDatabse object delete the item from the databse.
    // then remove it from the list
    ArrayAdapter adapter = (ArrayAdapter) getListAdapter();
    adapter.remove( results.get(position) );
    // and you'll probably now want to remove the String and id from your results
    results.remove(position);
    resultsIds.remove(position);
}

【讨论】:

    【解决方案2】:

    使用 onListItemClick 和参数 id 代替:

    @Override
    protected void onListItemClick(ListView listView, View view, int position, long id) {
        super.onListItemClick(listView, view, position, id);
    
        //TODO:
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-13
      • 1970-01-01
      • 1970-01-01
      • 2012-01-27
      相关资源
      最近更新 更多