Sto avendo un problema con un MatrixCursor
per popolare il mio ListView
:Utilizzando MatrixCursor e SimpleCursorAdapter in un ListView con testo e immagini
private void fillData() {
String[] menuCols = new String[] { "icon", "item", "price" };
int[] to = new int[] { R.id.icon, R.id.item, R.id.price };
MatrixCursor menuCursor = new MatrixCursor(menuCols);
startManagingCursor(menuCursor);
menuCursor.addRow(new Object[] { R.drawable.chicken_sandwich, "Chicken Sandwich", "$3.99" });
SimpleCursorAdapter menuItems = new SimpleCursorAdapter(
this, R.layout.menu_row, menuCursor, menuCols, to);
setListAdapter(menuItems);
}
Costruzione del SimpleCursorAdapter
causa un crash. Anche quando ho provato a rimuovere l'icona, l'app si bloccava ancora. Ecco la mia menu_row.xml
:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
<ImageView
android:id="@+id/icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</ImageView>
<TextView
android:id="@+id/item"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</TextView>
<TextView
android:id="@+id/price"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</TextView>
</LinearLayout>
Edit: Qui è lo stack di chiamate al momento del crash:
Thread [<3> main] (Suspended (exception RuntimeException))
ActivityThread.performLaunchActivity(ActivityThread$ActivityRecord, Intent) line: 2481
ActivityThread.handleLaunchActivity(ActivityThread$ActivityRecord, Intent) line: 2497
ActivityThread.access$2200(ActivityThread, ActivityThread$ActivityRecord, Intent) line: 119
ActivityThread$H.handleMessage(Message) line: 1848
ActivityThread$H(Handler).dispatchMessage(Message) line: 99
Looper.loop() line: 123
ActivityThread.main(String[]) line: 4338
Method.invokeNative(Object, Object[], Class, Class[], Class, int, boolean) line: not available [native method]
Method.invoke(Object, Object...) line: 521
ZygoteInit$MethodAndArgsCaller.run() line: 860
ZygoteInit.main(String[]) line: 618
NativeStart.main(String[]) line: not available [native method]
SOLUZIONE:
ho trovato il problema e la soluzione è nella mia risposta qui sotto.
Quando si verifica un arresto anomalo, è possibile esaminare la traccia dello stack per aiutare a capire dove le cose vanno male: utilizzare adb logcat, DDMS o la prospettiva DDMS in Eclipse. Se questo non ti fornisce abbastanza aiuto per risolvere il problema, pubblica la traccia dello stack come una modifica alla tua domanda, poiché potrebbe darci qualche indizio. – CommonsWare
Ottima domanda ... Vorrei averlo trovato due settimane fa! Grazie per il codice di esempio. Buon lavoro!! – mobibob