K
Krasaf
Neues Mitglied
- 0
Hallo Leute,
ich versuche gerade eine ListView zu erstellen, welche ein Bild enthält. Welches Bild es ist wird in der Datenbank gespeichert.
Die ListView ist im Main layout enthalten, doch ich habe noch eine Layout XML Datei die das Layout für jede einzelne Zeile der ListView enthält, diese wird logischerweise nicht mit setContentView eingebunden.
Doch jetzt kommt das Problem. Ich bauche die 2 TextViews und das ImageView aus meiner List Item XML um diese Views mit einem ViewBinder zu füllen. Doch wenn ich mir die Views in der OnCreate mit findViewById holen will dann haben meine Variablen NULL. Wie kann man das lösen ?
Hier mein Code dann sollte es verständlicher werden:
Hier ist die list_items.xml
ich versuche gerade eine ListView zu erstellen, welche ein Bild enthält. Welches Bild es ist wird in der Datenbank gespeichert.
Die ListView ist im Main layout enthalten, doch ich habe noch eine Layout XML Datei die das Layout für jede einzelne Zeile der ListView enthält, diese wird logischerweise nicht mit setContentView eingebunden.
Doch jetzt kommt das Problem. Ich bauche die 2 TextViews und das ImageView aus meiner List Item XML um diese Views mit einem ViewBinder zu füllen. Doch wenn ich mir die Views in der OnCreate mit findViewById holen will dann haben meine Variablen NULL. Wie kann man das lösen ?
Hier mein Code dann sollte es verständlicher werden:
Code:
public class Main extends ListActivity {
private DbAdapter mDbHelper;
private TextView tvvor;
private TextView tvnach;
private ImageView imgr;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.ringer);
ListView lv = getListView();
lv.setTextFilterEnabled(true);
mDbHelper = new DbAdapter(this);
mDbHelper.open();
tvvor = (TextView) findViewById(R.id.tvvor); //Diese 3 Variablen haben NULL
tvnach = (TextView) findViewById(R.id.tvnach);
imgr = (ImageView) findViewById(R.id.image);
Cursor cur = mDbHelper.fetchAll();
startManagingCursor(cur);
//Hier wird die LV gefüllt
String[] From = new String[] {DbAdapter.KEY_FIRSTNAME, DbAdapter.KEY_NAME, DbAdapter.KEY_IMAGE };
int[] To = new int[] {R.id.tvvor, R.id.tvnach, R.id.image};
ListAdapter scur = new SimpleCursorAdapter(this, R.layout.list_item, cur, From, To);;
((SimpleCursorAdapter) scur).setViewBinder(new SimpleCursorAdapter.ViewBinder() {
@Override
public boolean setViewValue(View view, Cursor cur, int columnIndex) {
int viewid = view.getId();
switch(viewid){
case R.id.tvvor:
tvvor.setText(cur.getString(cur.getColumnIndex(bAdapter.KEY_FIRSTNAME))); //Hier kommt dann eine Exception weil tvvor null ist.
break;
case R.id.tvnach:
tvnach.setText(cur.getString(cur.getColumnIndex(DbAdapter.KEY_NAME)));
break;
case R.id.image:
String img = cur.getString(cur.getColumnIndex(DbAdapter.KEY_IMAGE));
Uri u = Uri.parse(img);
imgr.setImageURI(u);
break;
}
return true;
}
});
lv.setAdapter(scur);
}
}
Hier ist die list_items.xml
Code:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/linearLayout1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal" >
<ImageView
android:id="@+id/image"
android:layout_width="76dp"
android:layout_height="72dp"
android:src="@drawable/unbenannt" />
<TextView
android:id="@+id/tvvor"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:padding="10dp"
android:text="Angela"
android:textSize="16sp" android:textStyle="bold" android:textColor="@color/blue">
</TextView>
<TextView
android:id="@+id/tvnach"
android:layout_width="161dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:padding="10dp"
android:text="Merkel"
android:textSize="16sp"
android:textStyle="bold"
android:layout_marginLeft="-15dp"
android:textColor="@color/blue"/>
</LinearLayout>