tables data convert columns android android-listview android-adapter android-tablelayout custom-cell

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