Datenbank und ListView

StefMa

StefMa

Dauergast
450
Hi,

ich habe eine Datenbank die sieht so aus:
id, telefonnummer, text, uhrzeit [..]

In einem ListView gebe ich die Telefonnummer mit der Uhrzeit aus. Einfach hintereinander via:
Code:
		ListView lv = (ListView) findViewById(R.id.loglistview);
	    
	    ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>();
	    HashMap<String, String> map = new HashMap<String, String>();
	    
	    // Lese datenbank aus und speichere es im hashMap!	   
	    MYDB = this.openOrCreateDatabase("DB", MODE_PRIVATE, null);
	    
	    Cursor number = MYDB.rawQuery("select telNumber from Table", null);
	    Cursor time = MYDB.rawQuery("select finishTime from Table", null);
	    
	    for(int x = 0; x<number.getCount(); ++x)
	    {
		    number.moveToNext();
		    String numberToSend = number.getString(0);
		    time.moveToNext();
		    String finishTime = time.getString(0);
		    
		    // Unix-Timespat in Human-readable :D
		    SimpleDateFormat sdfDatum = new SimpleDateFormat("dd.MM.yyyy");
		    SimpleDateFormat sdfUhrzeit = new SimpleDateFormat("HH:mm");
		    
		    map.put("nameNummer", "("+ numberToSend +")");
		    map.put("datumUhrzeit", sdfDatum.format(Long.parseLong(finishTime)) + " " + sdfUhrzeit.format(Long.parseLong(finishTime)));
		    mylist.add(map);
		    map = new HashMap<String, String>();
	    }
		
		SimpleAdapter mSchedule = new SimpleAdapter(this, mylist, R.layout.listlayout, new String[] {"nameNummer", "datumUhrzeit"}, new int[] {R.id.logTextViewNameNummer, R.id.logTextViewDatumUhrzeit});
		lv.setAdapter(mSchedule);

Jetzt wollte ich noch einen OnItemClickListener hinzufügen. Beim Clicken soll ein Dialog erscheinen mit dem text in der datenbank.
Genau hier liegt mein problem!
Wie stelle ich eine "verbindung" her, welche Item geklickt wurde und welcher text aus der datenbank?!
Wenn die ID in der datenbank vortlaufenwäre, wäre es kein problem. OnItemListener hat ja als parameter "position". Damit könnte ich ja einfach abzählen.
Allerdings kann ich auch aus dem ListView (oder möchte es später implementieren) items löschen. [Welche auch logischerweiße in der Datenbank gelöscht werden müssen].
Somit ist die Zuordnung position = id nicht mehr gegeben..

Wie gehe ich also vor?

Danke MfG Ice
 
Immer das selbe:
Wenn man fragt, kommt man auf die Lösung!

Wer es wissen will, wie ICH es mache: (Ja es gibt bestimmt auch andere wege!)
In der Schleife, die ja sowieso die komplette DB durchläuft, werde ich die ID in einem ListArray speichern.
Somit weiß ich später, dass ListArray[0] = position 0 usw. ist!
Im OnItemClickListener kann ich dann problemlos sagen:
Code:
select text from Table where id = ListArray[position]

MfG Ice
 
  • Danke
Reaktionen: ImperatorPlebis

Ähnliche Themen

S
Antworten
33
Aufrufe
2.655
Sempervivum
S
A
Antworten
10
Aufrufe
1.017
swa00
swa00
M
  • MikelKatzengreis
Antworten
5
Aufrufe
114
swa00
swa00
Zurück
Oben Unten