Wenn du nur zwei Zeilen brauchst, gibt's auch eine fertige Vorlage von Android, aber da du schon ein eigenes Layout hast, hier mal ein paar Code-Schnipsel für dich.
Zunächst brauchst du eine Datenstruktur für die Sachen, die du jeweils einbauen willst ("Datensatz"). Du kannst dir dafür entweder eine eigene Klasse bauen oder HashMap<String, String> benutzen, die ist zwar nicht so gut an deine Daten angepaßt, ist aber manchmal flexibler...
Dein Vorschlag mit zwei Arrays geht zwar auch, finde ich aber nicht so gut, weil eine eigene Klasse für jeden einzelnen Datensatz dann doch etwas intelligenter aussieht.
private class Datensatz {
public String name; // besser private und getter-Methoden schreiben, stört hier aber...
public String datum; // die Umwandlung von Datum lasse ich weg - frag das noch mal extra. ;)
public Datensatz(String name, String datum) {
this.name = name;
this.datum = datum;
}
}
Die Datensätze packst du dann in eine ArrayList, diese benutzt dann der Adapter, um die einzelnen Views zu erzeugen (vor Erzeugung des Adapters aufrufen - siehe unten):
private ArrayList<Datensatz> datensaetze;
private void initDatensaetze() {
datensaetze = new ArrayList<Datensatz>();
for (int i=0; i<nameArray.length; i++) {
datensaetze.add(new Datensatz(nameArray[i],datumArray[i]));
}
}
Nun kommt der Adapter, der dem ListView die einzelnen ListItems auf Anfrage liefert. Der Adapter muss auch ein getCount liefern, damit ListView weiß, wann Schluss ist. Außerdem braucht man meistens auch einen OnItemClickListener (dann dürfen die Items aber selber keine OnClickListener implementieren!)
class MyItemAdapter extends BaseAdapter implements OnItemClickListener {
private final LayoutInflater mInflater;
public MyItemAdapter() {
mInflater = (LayoutInflater) MyListActivity.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
public int getCount() {
return datensaetze.size();
}
public Datensatz getItem(int position) {
return datensaetze.get(position);
}
public long getItemId(int position) {
return (long) position;
}
public View getView(int position, View convertView, ViewGroup parent) {
LinearLayout itemView = (LinearLayout) mInflater.inflate(R.layout.mylistitemlayout, parent, false);
bindView(itemView, position);
return itemView;
}
private void bindView(LinearLayout view, int position) {
Datensatz datensatz = getItem(position);
view.setId((int) getItemId(position));
TextView nameTextView = (TextView) view.findViewById(R.id.name);
TextView datumTextView = (TextView) view.findViewById(R.id.datum);
nameTextView.setText(datensatz.name);
datumTextView.setText(datensatz.datum);
}
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// Meldung ausgeben oder Intent bauen und Activity starten
}
}
}
Alles anzeigen
So, nun der krönende Abschluss: einbinden in deinen ListView:
ListView l = (ListView) findViewById(R.id.listView1);
initDatensaetze();
MyItemAdapter myAdapter = new MyItemAdapter();
l.setAdapter(myAdapter);
l.setOnItemClickListener(myAdapter);
so, jetzt hab ich glaub ich alles zusammen - leider muss man sich das aus verschiedenen Quellen zusammen sammeln und Anfänger haben da manchmal zu viele lose Enden in der Hand. Aber hiermit solltest du schon mal klar kommen - Erweiterungsmöglichkeiten sind vor allem in Datensatz und bindView sinnvoll, je nach Quelle der Daten ist initDatensaetze auch einfach anzupassen.
Fehler und Verbesserungsvorschläge willkommen, dann kommt dies Ding auch in die Tutorials. 