2013-05-01 4 views
0

У меня есть вид списка, где будет отображаться мой SQL-запрос. Теперь я добавил OnItemClickListener удалить entrys по щелчку:База данных Android удаляет запись _ID Проблемы

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 в базе данных не ID, я получаю от функции onItemClick. Например, я добавлю 3 записи, удалю все, добавлю 3 новых. Для функции первая запись равна 0, в базе данных SQL ее 4 ...

Какое решение лучше всего исправить?

Than you very much!

+0

ли у вас есть шанс попробовать мой ответ? – pt2121

ответ

0

Переопределите этот метод для вашего класса адаптера, чтобы вы могли получить идентификатор в onItemClick.

@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 id и view.getId() returning wrong id in OnItemClickListener

Edit: так вот изменения Оли:

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

«Важно, чтобы использовать .notifyDataSetChanged() , на A dapter. Иначе он не будет работать.»

+0

Спасибо за вашу помощь. Я попробовал это, но это не будет работать. – Oli

+0

А теперь он работает! Я использовал неправильный адаптер .. final long id = ((EPListAdapter) arg0.getAdapter()). getItemId (arg2); – Oli

+0

Wow, great! Happy Coding :) – pt2121

Смежные вопросы