android - data - ListView o TableLayout?
table responsive (3)
Como ya han dicho otros en los comentarios, debe definir claramente qué desea hacer primero antes de tomar una decisión concreta sobre qué tipo de diseño usar. Sin embargo, ciertamente puedo entender la confusión que surge al tratar de decidir sobre qué tipo de clase de diseño usar, porque a menudo hay varios para elegir para lograr el mismo objetivo. Por ejemplo, para crear una lista de elementos de desplazamiento vertical, primero debe elegir un LinearLayout
vertical, que luego colocaría dentro de un ScrollView
. Pero, por otro lado, para lograr un resultado final similar, puede usar un ListView
junto con un Adapter
adecuado.
De manera similar, para mostrar una cuadrícula de elementos que pueden desplazarse verticalmente, puede usar un TableLayout
dentro de un ScrollView
. O bien, se podría lograr un resultado similar utilizando GridView
, nuevamente suministrando datos a través de un Adapter
adecuado.
Ahora, la primera diferencia clave es la siguiente: las clases como LinearLayout
y TableLayout
requieren que proporcione los elementos secundarios en diseños XML o alternativamente mediante programación en código. Las clases como ListView
y GridView
(y muchas otras) son muy diferentes porque son subclases de android.widget.AdapterView
. Lo especial de AdapterView
clases AdapterView
es que se utiliza un Adapter
para enlazar datos con ellas. Por lo tanto, volviendo al ejemplo de una lista vertical de elementos, si estuviera mostrando un grupo de elementos de la lista secundaria dentro de un LinearLayout
basado en algunos datos de matriz, tendría que crear y agregar View
secundarias en ese LinearLayout
mediante programación datos de la matriz. Con ListView
por otro lado, las View
individuales que representan los elementos secundarios se suministran desde un Adapter
adecuado. Entonces, en lugar de completar el diseño mediante programación con todos los elementos secundarios (como sería el caso con LinearLayout
o TableLayout
por ejemplo), un diseño basado en un Adapter
llama al Adapter
para obtener las View
secundarias cuando las necesita.
El último punto es la siguiente diferencia clave que creo que debería entender acerca de los diseños basados en Adapter
: son mucho más eficientes para mostrar grandes cantidades de datos, en situaciones donde gran parte de los datos están fuera de la vista. Por ejemplo, un ListView
es mucho más eficiente de usar para mostrar una gran lista de elementos de desplazamiento de lo que sería si simplemente rellenara un LinearLayout
con todos los elementos y lo pusiera dentro de un ScrollView
. La razón de esta eficiencia es que los diseños basados en AdapterView
generalmente no contienen todas las View
secundarias de una sola vez. En cambio, a medida que el usuario se desplaza por la lista, las vistas secundarias existentes son "recicladas" o "convertidas" por el Adapter
para mostrar los siguientes elementos secundarios. Para ilustrar esto con un ejemplo: desea una lista vertical de desplazamiento de 100 elementos. Sin embargo, la pantalla solo puede ser lo suficientemente grande para mostrar 7 a la vez. Imagina que utilizas un LinearLayout
dentro de un ScrollView
para mostrar 100 elementos de lista. Eso significa que el contenedor LinearLayout
tiene 100 Views
niño. Esos niños siempre están presentes en el diseño y deben ser procesados por el sistema durante los eventos de desplazamiento, incluso si solo se pueden ver siete a la vez en la pantalla. Esto requiere un tiempo de CPU adicional, una cantidad considerable de RAM y el desplazamiento puede ser lento. Ahora, con un ListView
, el diseño probablemente solo contendrá 7 u 8 View
niño. A medida que el usuario se desplaza, esas View
secundarias se convierten dinámicamente o se vuelven a crear instancias mediante el Adapter
través del cual usted vincula sus datos. El usuario experimentará una operación de desplazamiento más rápida y suave. Desde el punto de vista de la programación, generalmente es mucho más elegante enlazar listas de datos a través de un Adapter
. Cuando se trata de listas de desplazamiento o cuadrículas de Bitmap
s, las restricciones de memoria de un dispositivo Android
también significan que el uso de AdapterView
es bastante esencial.
Tenga en cuenta que al responder a esto, asumo que está intentando mostrar una lista vertical o tabular de elementos que se pueden desplazar, tal vez incluyendo Bitmap
s, y me estoy concentrando en el tipo de diseño que tiene. d uso para lograr el diseño y desplazamiento de esos datos. Las clases de diseño como LinearLayout
, TableLayout
, etc., sin embargo, son clases importantes que utilizará todo el tiempo para formar bloques de construcción de diseño individuales para sus aplicaciones. Si se garantiza que su lista completa se ajuste a la pantalla y no será desplazable, entonces la complejidad adicional de usar un Adapter
(no es que sea realmente tan complicado) puede ser inútil y es posible que solo desee usar un TableLayout
o lo que sea. .
Estoy realmente confundido ahora en cuanto a cuál aprender. Soy un desarrollador de aplicaciones para iPhone y ahora estoy aprendiendo el desarrollo de Android.
Aprendí a usar un ListView
con una matriz estática de cadenas usando un Adapter
. Estoy acostumbrado a usar celdas personalizadas en iPhone, principalmente para mostrar contenido dinámico como imágenes y texto en TableView
s.
Entonces, ¿cuál es el camino a seguir para hacer eso en Android? TableLayout
o ListView
?
El equivalente de Android a iOS UITableView
es RecyclerView
.
Es muy potente y puede llenarse con datos de diferentes fuentes según el tipo de Adapter le adjunte. Es posible que desee echar un vistazo a este Codelab RecyclerView .
1. Si desea dynamic data
en CUSTOM VIEW
en forma de lista, entonces ListView
con BaseAdapter
o ArrayAdapter
es el camino a seguir ...
2. TableLayout
será de uso completamente diferente , principalmente lo uso para mostrar los datos que se deben mostrar en forma de pila ... (es decir, uno sobre el otro ...)
Vea estos enlaces a continuación para una rápida comprensión e implementación:
http://www.ezzylearning.com/tutorial.aspx?tid=1763429
http://www.vogella.com/articles/AndroidListView/article.html