Список вложенных списков Android

Возможно ли / желательно иметь вложенный список?

Т.е. listView, который содержится в строке другого списка?

Примером будет мой главный список, отображающий сообщения в блоге, а затем в каждой строке у вас будет другое представление списка для комментариев для каждого сообщения (которое будет сбрасываться)

Сегодня у меня была такая же проблема, поэтому я решил ее решить:

У меня есть ListView с CustomAdapter и в getView пользовательского адаптера, у меня есть что-то вроде этого:

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); } 

Итак, возобновление. Невозможно вложить в ListViews, но вы можете создать список внутри строки с помощью LinearLayout и заполнить его кодом.

Это то, что вы ищете ExpandableListView ? Конечно, это ограничено только двумя уровнями списков (но похоже, что это сработает для ваших нужд).

Этот звук нравится тому, что вы ищете? Если вы этого не сделаете или если это не сработает, я бы предложил иметь два вида списка: один из, скажем, сообщений в блогах и второй комментарий, а действие в блоге отправляет вас во второй вид , Заполненный соответствующими комментариями.

Вы можете сделать это следующим образом:

Внутри родительского списка раскладки xml layout добавить следующий макет таблицы

  <TableLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/table_show" android:background="#beb4b4"> </TableLayout> 

То вы должны сделать макет для дочернего списка с именем 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> 

В вашем родительском методе getview-адаптера listview добавьте следующий код:

 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); } 

Вам лучше использовать один ListView, а не вложенный. Вложение ListView является неэффективным способом. Ваш ListView не может плавно прокручиваться и занимать больше памяти.

Вы можете организовать свою структуру данных для отображения вложенных данных в один ListView. Или вы можете использовать этот проект PreOrderTreeAdapter . Удобно отображать вложенные данные в ListView или RecyclerView. Его можно использовать для создания списков ListView или RecyclerView, просто изменив способ предоставления ваших данных, чем уведомлять адаптер.

Intereting Posts
Как предотвратить доступ к моему серверу неавторизованными клиентами Поддержка RecyclerView ничего не показывает, пока не коснется Студия Android – Не удалось выполнить выполнение градиента – ошибка при открытии zip-файла SendUserActionEvent () – null Добавить маржу между RadioButton и его лейблом в Android? Как я могу многострочно расширять заголовок CollapsingToolbarLayout? Синхронизированное воспроизведение звука на отдельных устройствах Android Как захватить веб-просмотр в растровое изображение на Android? Не удалось исправить ошибку Android Proguard с ошибкой 1 ошибка Создает ли эта активность – служебный шаблон обмена сообщениями утечку памяти? Видео не зацикливается на Android VideoView Позиционирование изображения внутри ImageView с максимальной высотой и максимальной шириной Сделать перескакивающий ListView в Android Последний муравей в Fedora 14 равен 1.7, но мне нужен муравей 1.8 Получение идентификатора контакта после сохранения контакта с Android