» »

Android, SQLite - brisanje vrstice iz baze

Android, SQLite - brisanje vrstice iz baze

SkIDiver ::

V tabelo baze npr zapišem vnose;
prvi
drugi
tretji
cetrti
peti
sesti


Nato zbrišem vrstico tretji. Če sedaj iz seznama izberem (vsebino tabele preberem v seznam) sesti mi vrne nazaj peti (torej dejansko bere peti vnos iz tabele namesto sesti). Če izberem peti mi vrne cetrti. Če izberem sedaj cetrti pa pride do napake pri izvajanju aplikacije. Če izberem drugi mi odpre drugi in če izberem prvi mi odpre prvi.

Pisanje v bazo
public long insertTitle(String title, String content) {
        ContentValues initialValues = new ContentValues();
        initialValues.put(KEY_TITLE, title);
        initialValues.put(KEY_CONTENT, content);
        return db.insert(DATABASE_TABLE, null, initialValues);
    }


Branje iz baze
public Cursor getTitle(long rowId) throws SQLException {
        Cursor mCursor = db.query(true, DATABASE_TABLE, new String[] {
                		KEY_ROWID, 
                		KEY_TITLE,
                		KEY_CONTENT
                		}, 
                		KEY_ROWID + "=" + rowId, 
                		null,
                		null, 
                		null, 
                		null, 
                		null);
        if (mCursor != null) {
            mCursor.moveToFirst();
        }
        return mCursor;
    }


Brisanje iz baze
public boolean deleteTitle(long rowId) {
        return db.delete(DATABASE_TABLE, KEY_ROWID + "=" + rowId, null) > 0;
        }


Seznam vnosov v bazo in listener na podlagi katerega berem izbrani zapis
ArrayList<String> al = new ArrayList<String>();
	ListView lv;
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main); 
        db = new DBAdapter(this);
        lv = (ListView) findViewById(R.id.ListView01);
        
        lv.setOnItemClickListener(new OnItemClickListener() {
        	public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
        		openNote(arg3 + 1);
        	}
        });
    }
    
    public void dbContent() {
    	db.open();
        c = db.getAllTitles();
        if (c.moveToFirst())
        {
            do {          
                al.add(c.getString(0) + " " + c.getString(1));
            } while (c.moveToNext());
        }
       
        lv.setAdapter(new ArrayAdapter<String>(this,
			android.R.layout.simple_list_item_1, al));
        db.close();
    }


Tukaj se zavedam, da ni primerna rešitev uporaba indexa arg3, vendar nimam ideje kako naj drugače dobim vrednost po kateri bi v bazi iskal vnos.

Hvala že vnaprej.

SkIDiver ::

OK sedaj sem prišel do zaključka kaj je narobe ne vem pa na kakšen način rešit težavo.

Iz ListView poberem index oz. mesto na katerem se nahaja izbrani zapis in grem oodpirat vnos z index+1 iz tabele.
Potem pa iz tabele pobrišem eno vrstico, recimo tretjo. Seznam ListView se mi osveži in imam prikazane vse vnose razen izbrisanega. Problem sedaj nastane, če jaz izberem iz seznama tretji vnos, ki ima iz ListView index = 2 in temu dodam +1 (ker vrstice v tabeli gredo od 1 dalje) in grem s 3 iskat zapis v bazo se aplikacija zruši (ker ne lovim napake), ker sem tretjo vrstico pobrisal.

Sedaj pa me muči kako hranit nek indeks poleg ListView-a, da bom ob izbiri iz njega klical pravilno vrstico iz baze. Kakšna ideja?

PS: Obstaja pri nas kak android development forum sicer?

revvs ::

Napiši svoj listview, ker ko ti izbrišeš potem se nastavi na -1, kar je pa seveda error, poleg tega pa se začne z 0 in ne z 1, se pravi taka je logika večino programskih jezikov.

SkIDiver ::

revvs že počnem to;) ListView se začne z 0, vrstice tabele se začnejo z 1.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[Android] Bluetooth aplikacija

Oddelek: Programiranje
51089 (952) marjan_h
»

C# WPF nalaganje info. iz XML dokumenta

Oddelek: Programiranje
61028 (848) MrStein
»

[Android]Cudno obnasanje aplikacije in emulatorja

Oddelek: Programiranje
71309 (1138) KernelPanic
»

Qt Designer -> KDevelop C++ Error

Oddelek: Programiranje
352121 (1651) 'FireSTORM'
»

C#, Dodajanje podatkov v Arraylist z Gumbom

Oddelek: Programiranje
82282 (2121) Beezgetz

Več podobnih tem