witam, mam kolejny problem otoz:
w mainactivity mam listview w ktorym wyswietlane sa rekordy z bazy, po dlugim kliknieciu na dany wiersz nastepuje przejscie do nowej aktywnosci z przekazaniem id elementu:
//ustawienie trybu wielokrotnego wyboru
mLista.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
mLista.setOnItemLongClickListener(new OnItemLongClickListener(){
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
int id2= (int) id;
Intent i = new Intent(MainActivity.this, AktywnoscEdytuj.class);
i.putExtra("title_activity_aktywnosc_edytuj",id2);
startActivity(i);
return false;
}
});
mLista.setMultiChoiceModeListener(new MultiChoiceModeListener() {
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
MenuInflater pompka = mode.getMenuInflater();
pompka.inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
switch (item.getItemId())
{
case R.id.akcja_Usun:
kasujZaznaczone();
return true;
//case R.id.akcja_Edytuj:
//String id= PomocnikBD.ID;
//uruchomAktywnoscEdytuj();
//return true;
}
return false;
}
@Override
public void onDestroyActionMode(ActionMode mode) {
// TODO Auto-generated method stub
}
@Override
public void onItemCheckedStateChanged(ActionMode mode,
int position, long id, boolean checked) {
int id2= (int) id;
Intent i = new Intent(MainActivity.this, AktywnoscEdytuj.class);
i.putExtra("title_activity_aktywnosc_edytuj",id2);
startActivity(i);
}
});
w drugiej aktywnosci ktora sluzy do edytowania danego rekordu na podstawie tego id w odpowiednie edittexty wstawiam poszczegolne wartosci danego rekordu. Kod aktualizujacy baze:
public void odczytanieDanych()
{
PomocnikBD mPomocnikBD=new PomocnikBD(this);
SQLiteDatabase mBD=mPomocnikBD.getReadableDatabase();
Cursor kursor = mBD.query(true, //distinct
PomocnikBD.NAZWA_TABELI, //tabela
new String[]{PomocnikBD.ID,PomocnikBD.KOLUMNA_PRODUCENT,PomocnikBD.KOLUMNA_MODEL,PomocnikBD.KOLUMNA_WERSJA,PomocnikBD.KOLUMNA_WWW},
//kolumny
null, //where
null, //whereArgs - argumenty zastępujące "?" w where
null, //group by
null, //having
null, //order by
null); //limit
// wskazanie na pierwszy rekord bazy
kursor.moveToFirst();
// czy jest sie na ostatnim rekordzie
kursor.isAfterLast();
int i=0;
while(i==0)
{
int indeksKolumnyID= kursor.getColumnIndexOrThrow(PomocnikBD.ID);
String wartoscID=kursor.getString(indeksKolumnyID);
int wartoscID2= Integer.parseInt(wartoscID);
if(item== wartoscID2)
{
// odczytywanie wartosci producenta
int indeksKolumnyProducent= kursor.getColumnIndexOrThrow(PomocnikBD.KOLUMNA_PRODUCENT);
wartoscProducent=kursor.getString(indeksKolumnyProducent);
// odczytywanie wartosci modelu
int indeksKolumnyModel= kursor.getColumnIndexOrThrow(PomocnikBD.KOLUMNA_MODEL);
wartoscModel=kursor.getString(indeksKolumnyModel);
// odczytywanie wartosci wersji
int indeksKolumnyWersja= kursor.getColumnIndexOrThrow(PomocnikBD.KOLUMNA_WERSJA);
wartoscWersja=kursor.getString(indeksKolumnyWersja);
// odczytywanie wartosci www
int indeksKolumnyWWW= kursor.getColumnIndexOrThrow(PomocnikBD.KOLUMNA_WWW);
wartoscWWW=kursor.getString(indeksKolumnyWWW);
i=1;
}
// przejscie do nastepnego rekordu
kursor.moveToNext();
}
}
public void aktualizacjaRekordow()
{
PomocnikBD mPomocnikBD=new PomocnikBD(this);
SQLiteDatabase mBD=mPomocnikBD.getWritableDatabase();
int mIdWiersza= item; // item to id przekazane z pierwszej aktywnosci
ContentValues wartosci = new ContentValues();
wartosci.put(PomocnikBD.KOLUMNA_PRODUCENT,EeditTextProducent.getText().toString());
wartosci.put(PomocnikBD.KOLUMNA_MODEL,EeditTextModel.getText().toString());
wartosci.put(PomocnikBD.KOLUMNA_WERSJA,EeditTextWersja.getText().toString());
wartosci.put(PomocnikBD.KOLUMNA_WWW,EeditTextWWW.getText().toString());
mBD.update(PomocnikBD.NAZWA_TABELI, //tabela
wartosci, //wartości
PomocnikBD.ID+"="+mIdWiersza, //where
null);
}
po zatwierdzeniu zmian lub gdy chce anulowac zamykam ta aktywnosc finish();
Problem polega na tym ze wroce do pierwszej aktywnosci z aktualizowanym rekordem zmiany widoczne sa dopiero po ponownym uruchomieniu aplikacji.