Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Cómo mostrar una columna de dos columnas ListView en Android?

Tengo una aplicación de Android que muestra una vista de cuadrícula que muestra:

1

  • ¿Soporta Android JDK 6 o 7
  • Selector de fondo en RecyclerView Item
  • Configuración de JAVA_HOME en SDK de Android
  • ¿Practicando las métricas de diseño de Android?
  • Expandir / Contraer Animación: Pequeño retraso || MeasureSpec devuelve un valor incorrecto
  • ¿Las pruebas de selenio valen la pena en dispositivos móviles?
  • 2

    3

    4

    GridView gridview=(GridView)findViewById(R.id.GridView_test); DataBaseHelper dbhelper=new DataBaseHelper(this); ArrayList<String> test=new ArrayList<String>(5); backlinksadapter.add("1"); backlinksadapter.add("2"); backlinksadapter.add("3"); backlinksadapter.add("4"); ArrayAdapter mAdapter=new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, test); gridview.setAdapter(mAdapter); 

    Por el momento está trabajando, pero me gustaría mostrar foreach línea de la cuadrícula, 2 columnas con los valores de una matriz de 2 dimensiones (algo así como el GridView en ASP.Net – como fuente de datos -).

    Me gustaría mostrar:

    1 | Persona 1

    2 | Persona 2

    3 | Persona 3

    4 | Persona 4

    ¿Alguna idea?

  • ¿Qué es una clase completa de ayuda de base de datos Android para una base de datos SQLite existente?
  • Cómo almacenar texto largo en Android?
  • ¿Cómo evitar que una vista de desplazamiento se desplace a una vista web después de cargar los datos?
  • Android: ¿Alinear el botón en la parte inferior derecha de la pantalla usando FrameLayout?
  • Eclipse ADT Excepción inesperada 'No se puede ejecutar el programa'
  • Implementación de aplicaciones Android Wearable en Moto 360 para propósitos de depuración
  • 5 Solutions collect form web for “Cómo mostrar una columna de dos columnas ListView en Android?”

    ¿Tiene que ser una vista de cuadrícula? ¿Funcionará un ListView?

    Escribí un ListView y ListActivity que muestra dos elementos en cada fila. Empecé con el SDK suministrado simple_list_item_2.xml diseño que enumera dos elementos por fila, pero coloca uno encima de otro (dos líneas) con la segunda línea con una fuente más pequeña. Lo que quería era tanto artículos en la misma línea, uno a la derecha y uno a la izquierda.

    Primero copié el archivo simple_list_item_2.xml en el directorio res / layout de mi proyecto bajo un nuevo nombre y cambié la propiedad android: mode = "twoLine" a "oneLine" mientras mantenía el nombre del elemento view como "TwoLineListItem". Entonces reemplazé los dos elementos internos por otros que hicieron lo que quería.

    En el código para inicializar la lista, creé un MatrixCursor y lo llené con los datos deseados. Para soportar dos elementos, cada fila en el MatrixCursor requiere tres columnas, una de ellas es una clave primaria, "_id", y las otras dos columnas son los elementos que quería mostrar. Entonces pude usar un SimpleCursorAdapter para llenar y controlar el ListView.

    Mi archivo XML de diseño:

      <?xml version="1.0" encoding="utf-8"?> <TwoLineListItem xmlns:android="http://schemas.android.com/apk/res/android" android:paddingTop="2dip" android:paddingBottom="2dip" android:layout_width="fill_parent" android:layout_height="wrap_content" android:minHeight="?android:attr/listPreferredItemHeight" android:mode="oneLine" > <TextView android:id="@android:id/text1" android:gravity="left" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="6dip" android:layout_marginTop="6dip" android:textAppearance="?android:attr/textAppearanceLarge" /> <TextView android:id="@android:id/text2" android:gravity="right" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginLeft="6dip" android:layout_marginTop="6dip" android:layout_marginRight="6dip" android:layout_toRightOf="@android:id/text1" android:textAppearance="?android:attr/textAppearanceLarge" android:textColor="@color/MainFontColor" /> </TwoLineListItem> 

    Tenga en cuenta que usé "izquierda" y "derecha": los valores de gravedad para hacer que el elemento izquierdo sea justificado a la izquierda y el elemento del lado derecho justificado a la derecha. Necesitará diferentes valores de gravedad para su diseño además de que necesitará propiedades para controlar el tamaño del elemento del lado izquierdo que no necesitaba.

    El método en mi clase ListActivity que inicializó el ListView:

     private void initListView() { final String AuthorName = "Author: "; final String CopyrightName = "CopyRight: "; final String PriceName = "Price: "; final String[] matrix = { "_id", "name", "value" }; final String[] columns = { "name", "value" }; final int[] layouts = { android.R.id.text1, android.R.id.text2 }; MatrixCursor cursor = new MatrixCursor(matrix); DecimalFormat formatter = new DecimalFormat("##,##0.00"); cursor.addRow(new Object[] { key++, AuthorName, mAuthor }); cursor.addRow(new Object[] { key++, CopyrightName, mCopyright }); cursor.addRow(new Object[] { key++, PriceName, "$" + formatter.format(mPrice) }); SimpleCursorAdapter data = new SimpleCursorAdapter(this, R.layout.viewlist_two_items, cursor, columns, layouts); setListAdapter( data ); } // end of initListView() 

    El parámetro para el constructor MatrixCursor es una matriz de cadenas que definen el orden y los nombres de las columnas en el cursor. Importante: Asegúrese de agregar una columna "_id", sin ella la MatrixColumn lanzará una excepción y no funcionará.

    Las tres variables, mAuthor, mCopyright y mPrice, son tres miembros de datos en mi clase ListAdaptor y se inicializan en otro lugar. En mi código actual, mAuthor se construye realmente en este método de una lista de nombres del autor. Los nombres de los autores se concatenan en una sola cadena usando "\ n" como separadores entre los nombres. Esto hace que los nombres de varios autores aparezcan en líneas diferentes en el mismo TextView.

    Los parámetros ctor de SimpleCursorAdapter son el ID de la vista que se debe utilizar para cada fila de lista, el cursor que contiene los datos, una matriz de cadenas donde cada elemento es el nombre de la columna del cursor (en el orden en que se obtienen) Matriz de ID de vista para la vista que se va a utilizar para cada elemento de la fila de lista.

    Si no puede encontrar un adaptador existente que tenga esas propiedades, puede crear su propio adaptador personalizado y tenerlo asignado a su vista.

    El tutorial de Hello, GridView muestra cómo hacerlo.

    JRL tiene razón, debe escribir su propio adaptador personalizado que le permitirá controlar lo que se mostrará en cada fila. Puede que esto le resulte útil. Un ejemplo más avanzado se puede encontrar aquí http://developerlife.com/tutorials/?p=327 .

    Si no desea / tiene que usar una lista, un TableLayout podría mostrar sus datos también. Pero ese sería el enfoque manual ya que tendrías que llenar cada celda.

    Lo mejor del éxito.

    ¿Por qué no crear una clase, cuyo toString() devuelve str(id) + " | " + personName y lo usa como una clase de plantilla en lugar del objeto String ?

    Simplemente puede agregar esto en su XML android: numColumns = "2"

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.