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.

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> 

One Solution collect form web for “Android – Visualización de los resultados del cursor de DB en ListView”

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.

  • Android: desplazamiento sin fin - ListView y Cursor
  • AutoCompleteTextView con CursorLoader y SimpleCursorAdapter
  • Cuándo cerrar Cursor utilizado en SimpleCursorAdapter
  • Android Listview - no puede seleccionar varios elementos cuando usa un cursor
  • Cómo obtener datos en OnItemClickListener desde SimpleCursorAdapter
  • Los métodos onCreateViewHolder y onBindViewHolder de RecyclerView.Adapter no se reciben
  • SimpleCursorAdapter con ImageView y TextView
  • ¿Por qué cursorLoader no notificó cambios en los datos de origen?
  • Uso de la vista de reciclaje con una base de datos
  • Causado por: java.lang.IllegalArgumentException: columna '_id' no existe
  • Actualizar Android ListView
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.