Android – Visualización de los resultados del cursor de DB en ListView
He estado intentando conseguir mi cursor para exhibir correctamente en listview. Se muestra correctamente cuando se utiliza un brindis por lo que el cursor está recuperando los datos correctamente, pero estoy teniendo problemas para hacer que se muestre en formato de lista.
Debe haber 6 columnas en cada fila.
- Cómo obtener datos de Cursor en ContextMenu
- Obtener el elemento seleccionado de ListView enlazado con SimpleCursorAdapter
- Android, usando SimpleCursorAdapter para establecer el color no sólo las cadenas
- NullPointer cuando findViewById () en SimpleCursorAdapter
- Cursor se desactiva antes de llamar a este método
Sólo muestra una fila sin datos. Estoy seguro de que es un problema muy básico. Tal vez alguien podría decirme a dónde me equivoco, estaría agradecido.
DisplayCursor.Java
public class DisplayCursor extends ListActivity { MyDBManager db = new MyDBManager(this); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_display_cursor); db.open(); Cursor cursor = db.getAllRows(); startManagingCursor(cursor); String[] columns = new String[] { MyDBManager.KEY_DESCRIPTION, MyDBManager.KEY_PERCENTAGE, MyDBManager.KEY_PRICE, MyDBManager.KEY_VOLUME, MyDBManager.KEY_VFM, MyDBManager.KEY_QUANTITY }; int[] to = new int[] { R.id.description,R.id.perc,R.id.price,R.id.units,R.id.vol, R.id.vfm }; SimpleCursorAdapter mAdapter = new SimpleCursorAdapter(this, R.layout.row, cursor, columns, to); this.setListAdapter(mAdapter); db.close(); } }
Row.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:id="@+id/description" android:layout_width="140dp" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_marginTop="27dp" /> <TextView android:id="@+id/vol" android:layout_width="30dp" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/description" android:layout_alignBottom="@+id/description" android:layout_toRightOf="@+id/description" /> <TextView android:id="@+id/perc" android:layout_width="30dp" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/vol" android:layout_alignBottom="@+id/vol" android:layout_toRightOf="@+id/vol" /> <TextView android:id="@+id/price" android:layout_width="30dp" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/perc" android:layout_alignBottom="@+id/perc" android:layout_toRightOf="@+id/perc" /> <TextView android:id="@+id/units" android:layout_width="30dp" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/price" android:layout_alignBottom="@+id/price" android:layout_toRightOf="@+id/price" /> <TextView android:id="@+id/vfm" android:layout_width="80dp" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/units" android:layout_alignBottom="@+id/units" android:layout_toRightOf="@+id/units" /> </RelativeLayout>
Activity_display_cursor.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content"> <ListView android:id="@android:id/list" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <TextView android:id="@android:id/empty" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/nodata"/> </LinearLayout>
- Actualizar Android ListView
- SimpleCursorAdapter vs CursorAdapter?
- Cómo solucionar esto sólo se debe llamar cuando el cursor es válido utilizando ExpandableListView
- Cómo establecer onClick escucha de un ImageButton en ViewBinder?
- Android: desplazamiento sin fin - ListView y Cursor
- Cómo obtener datos en OnItemClickListener desde SimpleCursorAdapter
- Creación de un adaptador de cursor simple personalizado
- ¿Cómo pasar de managedQuery a LoaderManager / CursorLoader?
Ah, ListView con CursorAdapter golpea de nuevo! No es fácil rondar la primera vez, así que:
Usted tiene la mayoría de lo correcto, sin embargo, su row.xml debe contener una vista para cada columna en el cursor que desea mostrar. El argumento "layout" en el constructor CursorAdapter especifica el resID de un archivo de diseño; Este archivo describe una fila . En su caso, probablemente desee un RelativeLayout que tenga 6 TextViews en él, uno para cada uno de los valores de R.id en el argumento "to" para el constructor. El CursorAdapter se encarga de asignar las columnas del cursor a las vistas en el argumento "to", por lo que el tamaño de esos arrays tiene que ser el mismo.
El layout activity_display_cursor.xml define el ListView.
Como nota, no uso ListActivity mucho. Es bastante fácil configurar un ListView con un adaptador en una actividad normal. Además, startManagingCursor fue obsoleto en API 11. Una mejor opción es usar android.support.v4.content.CursorLoader y android.support.v4.widget.SimpleCursorAdapter.
- Cómo probar el archivo java generado automáticamente usando JUnit para mi AIDL
- Generar error de buildfiles de Ant