【问题标题】:Android Database delete entry _ID ProblemsAndroid数据库删除条目_ID问题
【发布时间】:2013-05-02 00:34:15
【问题描述】:

我有一个列表视图,其中将显示我的 SQL 查询。 现在我添加了一个OnItemClickListener 来删除点击条目:

lv.setOnItemClickListener(new OnItemClickListener()
{
public void onItemClick(AdapterView<?> arg0,View arg1,int arg2, long arg3){
    ListView lv = (ListView) findViewById(R.id.listView1);      
    final String Name = lv.getAdapter().getItem(arg2).toString();
    final String ID = String.valueOf(arg3);

    CharSequence dbeintrag = getString(R.string.dbeintrag);
    CharSequence yes = getString(R.string.yes);
    CharSequence no = getString(R.string.no);
    Builder alertDialog = new AlertDialog.Builder(EP.this);
    alertDialog.setTitle(Name);
    alertDialog.setMessage(dbeintrag);
    alertDialog.setCancelable(true);
    alertDialog.setPositiveButton(yes, new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int which) {
            deleteentry(Name,ID);
            fillSQLData(); // refresh
        } }); 

    alertDialog.setNegativeButton(no, new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int which) {

        } }); 
    alertDialog.show();
}
});  

}

 public void deleteentry(String Name,long ID) // Lösche Eintrag
    {
        DataBaseHelper myDbHelper = new DataBaseHelper(null);
        myDbHelper = new DataBaseHelper(this);

        ID = ID+1; // Anpassen zur DB

        SQLiteDatabase database = myDbHelper.getWritableDatabase();
        database.execSQL("DELETE FROM Heute WHERE Name='"+Name+"' and _id='"+ID+"'");
        mPLAdapter.notifyDataSetChanged();
    }

现在我的问题是我在数据库中的 ID 不是我从 onItemClick 函数获得的 ID。 例如,我将添加 3 个条目,全部删除,添加 3 个新条目。该函数的第一个条目是 0,在 SQL 数据库中它的第一个条目是 4...

解决此问题的最佳解决方案是什么?

非常感谢你!

【问题讨论】:

  • 你有机会尝试我的答案吗?

标签: android sqlite android-adapterview


【解决方案1】:

将此方法覆盖到您的适配器类,以便您可以在 onItemClick 中检索 id。

@Override
public long getItemId(int position) {
    return yourList.get(position);
}

在 onItemClick 中

final String ID = String.valueOf(lv.getAdapter().getItemId(arg2)); 
//long id = ((YourAdapter)parent.getAdapter()).getItemId(arg2);

请参阅Android OnItemClickListener long id parameter is not giving field idview.getId() returning wrong id in OnItemClickListener

编辑:这是 Oli 的更改:

final long id = ((EPListAdapter)arg0.getAdapter()).getItemId(arg2);

“在适配器上使用 .notifyDataSetChanged(); 很重要。否则它将不起作用。”

【讨论】:

  • 啊,现在成功了!我使用了错误的适配器.. final long id = ((EPListAdapter)arg0.getAdapter()).getItemId(arg2);
  • 哇,太好了!快乐编码:)
  • 重要的是使用 .notifyDataSetChanged();在适配器上。否则它将无法正常工作。
猜你喜欢
  • 1970-01-01
  • 2012-10-15
  • 2012-07-14
  • 1970-01-01
  • 2021-01-06
  • 2017-07-26
  • 1970-01-01
  • 2021-12-24
  • 1970-01-01
相关资源
最近更新 更多