TableLayout con RecyclerView
Sólo hay dos gestores de diseño para RecyclerView
: LinearLayoutManager
y GridLayoutManager
. ¿Hay alguna manera de utilizar TableLayout
como gestor de diseño con RecyclerView
? ¿Cualquier sugerencia?
EDIT: Me pregunto si hay alguna solución sin escribir un gestor de diseño desde cero. Comportamiento de TableLayout
es suficiente para mí, sólo quiero agregar la función de reciclaje de los problemas de rendimiento en el manejo de gran cantidad de datos fo.
- Distancia entre RecyclerView demasiado lejos
- RecyclerView java.lang.IndexOutOfBoundsException: Inconsistencia detectada. Posición de elemento no válida cuando se reanuda desde fragmento añadido
- RecyclerView y solicitudes de fondo con una gran colección de elementos
- ¿Cómo saber si un RecyclerView / LinearLayoutManager se desplaza hacia arriba o abajo?
- RecyclerView onClick notifyItemRemoved no desencadena onBindView
Y la creación de una tabla mirando listview no es resolver mi problema, creo, porque mi mesa es muy dinámica, no sé ni siquiera nombres de columna, el cliente decide todos los detalles de la tabla. Así que las celdas serían personalizadas, el ancho de las columnas debe ser el redimensionamiento automático depende de la longitud del contenido. No creo que listview pueda manejar eso.
Gracias de antemano por las ayudas.
- Recyclerview notifyDataSetChanged (); no funciona
- ¿Cómo usar RecyclerView dentro de NestedScrollView?
- RecyclerView LinearLayoutManager computeVerticalScrollOffset () no devuelve el valor correcto
- Android - ¿Cómo cambiar la altura de Recyclerview dinámicamente?
- ¿Cómo implementar multi-select en RecyclerView?
- Desplácese hacia arriba en RecyclerView con LinearLayoutManager
- Android - Cómo detener la recarga de imágenes en Recyclerview al desplazarse
- Soporte RecyclerView no muestra nada hasta que se toca
Echa un vistazo a esta biblioteca . Parece que es exactamente lo que necesita. Tiene un sistema de reciclaje también.
Hay muchas bibliotecas de código abierto y códigos disponibles para averiguar cómo se puede desarrollar.
- https://github.com/evrencoskun/TableViewSample
- https://github.com/HYY-yu/TableRecyclerView
- https://github.com/Cleveroad/AdaptiveTableLayout
- https://github.com/celerysoft/TableFixHeaders
Recomendaría que construyas tu propia vista de tabla usando RecyclerView
anidado cuyos elementos representan filas de tabla y cada elemento tiene un RecyclerView
que muestra las columnas de celda. Así que puede crear celdas de la tabla dinámicamente. Y cada recyclerviews maneja gestiones de memoria propia, reutilizar todos los visores de celda.
Justo como esto:
Puede utilizar Android RecyclerView con GridView GridLayoutManager ejemplo tutorial
http://www.android-examples.com/android-recyclerview-with-gridview-gridlayoutmanager/
Android RecyclerView con GridView GridLayoutManager ejemplo tutorial.
Código para el archivo MainActivity.java.
package com.android_examples.recyclerviewgridview_android_examplescom; import android.content.Context; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.support.v7.widget.GridLayoutManager; import android.support.v7.widget.RecyclerView; public class MainActivity extends AppCompatActivity { RecyclerView recyclerView; Context context; RecyclerView.Adapter recyclerView_Adapter; RecyclerView.LayoutManager recyclerViewLayoutManager; String[] numbers = { "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "eleven", }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); context = getApplicationContext(); recyclerView = (RecyclerView) findViewById(R.id.recycler_view1); //Change 2 to your choice because here 2 is the number of Grid layout Columns in each row. recyclerViewLayoutManager = new GridLayoutManager(context, 2); recyclerView.setLayoutManager(recyclerViewLayoutManager); recyclerView_Adapter = new RecyclerViewAdapter(context,numbers); recyclerView.setAdapter(recyclerView_Adapter); } }
Código para el archivo de diseño activity_main.xml.
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.android_examples.recyclerviewgridview_android_examplescom.MainActivity" android:id="@+id/relativelayout"> <android.support.v7.widget.RecyclerView android:id="@+id/recycler_view1" android:layout_width="match_parent" android:layout_height="match_parent" android:scrollbars="vertical" > </android.support.v7.widget.RecyclerView> </RelativeLayout>
Código para el archivo RecyclerViewAdapter.java.
package com.android_examples.recyclerviewgridview_android_examplescom; import android.content.Context; import android.graphics.Color; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.LinearLayout; import android.widget.TextView; /** * Created by JUNED on 6/16/2016. */ public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder>{ String[] values; Context context1; public RecyclerViewAdapter(Context context2,String[] values2){ values = values2; context1 = context2; } public static class ViewHolder extends RecyclerView.ViewHolder{ public TextView textView; public ViewHolder(View v){ super(v); textView = (TextView) v.findViewById(R.id.textview1); } } @Override public RecyclerViewAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType){ View view1 = LayoutInflater.from(context1).inflate(R.layout.recycler_view_items,parent,false); ViewHolder viewHolder1 = new ViewHolder(view1); return viewHolder1; } @Override public void onBindViewHolder(ViewHolder Vholder, int position){ Vholder.textView.setText(values[position]); Vholder.textView.setBackgroundColor(Color.CYAN); Vholder.textView.setTextColor(Color.BLUE); } @Override public int getItemCount(){ return values.length; } }
Código para el archivo de diseño recycler_view_items.xml.
<?xml version="1.0" encoding="utf-8"?> <android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:card_view="http://schemas.android.com/apk/res-auto" android:id="@+id/cardview1" android:layout_width="match_parent" android:layout_height="wrap_content" card_view:cardElevation="7dp" card_view:contentPadding="7dp" card_view:cardCornerRadius="7dp" card_view:cardMaxElevation="7dp" > <TextView android:id="@+id/textview1" android:layout_width="match_parent" android:layout_height="match_parent" android:textSize="20dp" android:textStyle="bold" android:padding="10dp" android:layout_gravity="center" android:gravity="center" /> </android.support.v7.widget.CardView>
http://www.android-examples.com/android-recyclerview-with-gridview-gridlayoutmanager/
O seguir la disposición simple de la tabla disposición androide de la tabla – exmple simple
Cree una fila personalizada con linearlayout y adjunte esa fila a recyclerView Adapter esto es sólo la solución para hacer una tabla como Structure en RecyclerView.
- La imagen de color se volvió para no tener color y sólo un vector gris en drawable?
- Cómo configurar la relación de aspecto fijo para un diseño en Android