Vista anidada de android
¿Es posible / conveniente tener una lista anidada?
Es decir un listView que está contenido dentro de una fila de otro listview?
- Android ListView resaltar varios elementos
- Mostrar número de contacto y nombre de contacto en una vista de lista personalizada
- ¿Por qué aparece el teclado de Android al agregar un ListView?
- Listview setItemChecked no funciona
- Android: ¿Crear ListView en XML?
Un ejemplo sería donde mi lista principal está mostrando las entradas del blog, y luego en cada fila, tendría otra vista de lista para los comentarios de cada puesto (que sería plegable)
- Agregue varios textViews (de anchos variables) en relativeLayout uno tras otro
- ¿Cómo implementar un titular de vista?
- Galería de imágenes de desplazamiento horizontal de Android
- cómo filtrar el listview personalizado en android
- Animar elementos de la lista en ListView
- Cómo obtener ArrayIndex fuera de límites Excepción al agregar nuevos elementos a la lista mientras se desplaza
- ListView haga clic para mostrar la imagen en ImageView
- Motorola Droid X, Android 2.3.3 divisor de filas de vista de lista
Tuve el mismo problema hoy, así que esto es lo que hice para solucionarlo:
Tengo un ListView, con un CustomAdapter, y en el getView del customAdapter, tengo algo como esto:
LinearLayout list = (LinearLayout) myView.findViewById(R.id.list_musics); list.removeAllViews(); for (Music music : albums.get(position).musics) { View line = li.inflate(R.layout.inside_row, null); /* nested list's stuff */ list.addView(line); }
Por lo tanto, la reanudación, no es posible anidar a ListViews, pero puede crear una lista dentro de una fila utilizando LinearLayout y rellenarlo con código.
¿Es lo que está buscando el ExpandableListView ? Por supuesto, que se limita a sólo dos niveles de anuncios (pero parece que funcionaría para sus necesidades).
¿Esto suena como lo que estás buscando? Si no lo estás, o si esto no funciona, te sugeriría que tuvieras dos vistas de la lista: una de, por ejemplo, las entradas del blog, y la segunda de los comentarios, y una acción en un elemento de la entrada del blog te lleva a la segunda vista , Rellenado con los comentarios relevantes.
Usted puede hacerlo de esta manera:
Dentro de la plantilla xml de la fila listview principal agregue el siguiente diseño de tabla
<TableLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/table_show" android:background="#beb4b4"> </TableLayout>
Entonces usted tiene que hacer un diseño para la lista de niños con el nombre reply_row.xml
<?xml version="1.0" encoding="utf-8"?> <TableRow android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="3dp" xmlns:android="http://schemas.android.com/apk/res/android"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/tv_reply_row" android:textColor="#000"/> </TableRow>
En su método getview del adaptador listview padre agregue el código siguiente:
TableLayout replyContainer = (TableLayout) // vi is your parent listview inflated view vi.findViewById(R.id.table_show); LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); //child listview contents list String [] replys = {"a","b","c","d"}; for (int i=0;i<replys.length;i++) { final View comments = inflater.inflate(R.layout.reply_row, null); TextView reply_row = (TextView) comments.findViewById(R.id.tv_reply_row) ; reply_row.setText(replys[i]); //for changing your tablelayout parameters TableLayout.LayoutParams tableRowParams=new TableLayout.LayoutParams (TableLayout.LayoutParams.FILL_PARENT,TableLayout.LayoutParams.WRAP_CONTENT); int leftMargin=3; int topMargin=2; int rightMargin=3; int bottomMargin=2; tableRowParams.setMargins(leftMargin, topMargin, rightMargin, bottomMargin); comments.setLayoutParams(tableRowParams); TableRow tr = (TableRow) comments; replyContainer.addView(tr); }
Es mejor usar un ListView, no anidado. Anidar ListView es una manera ineficiente. Su ListView puede no desplazarse sin problemas y ocupar más memoria.
Podría organizar su estructura de datos para mostrar datos anidados en un ListView. O puede utilizar este proyecto PreOrderTreeAdapter . Es conveniente mostrar datos anidados en ListView o RecyclerView. Puede utilizarse para hacer que ListView o RecyclerView se puedan desplegar, solo cambie la forma en que proporciona sus datos antes de notificar al adaptador.
- Las diferencias entre createRfcommSocketToServiceRecord y createRfcommSocket
- SQLiteOpenHelper no puede llamar a onCreate?