Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
Andrey345
0 / 0 / 0
Регистрация: 09.02.2016
Сообщений: 7
1

Как создать список (ListView) с динамическим количеством передаваемых View?

09.02.2016, 19:51. Просмотров 867. Ответов 12
Метки нет (Все метки)

Доброго времени суток!
Такая проблема:
Требуется создать список к примеру через SimpleAdapter в котором неизвестно сколько будет View:
т.к. view будут создаваться программно и их неизвестно сколько я не знаю как их определить в адаптере, там требуется массив id указывающих на view (new int[])
Java
1
2
3
      SimpleAdapter adapter = new SimpleAdapter(activity, mCatList,
                R.id.listView, new String[]{Name1,Name2,Name3....},
                new int[]{R.id.view1, R.id.view2.....}); //(Как сюда передать View созданные программно или нужно использовать какие то другие конструкторы списков? )
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.02.2016, 19:51
Ответы с готовыми решениями:

Как переместить фокус на определённое view в listView
Всех приветствую. Подскажите пожалуйста,как переместить фокус на итый элемент...

ListView с изменяющимся количеством элементов
Нужно реализовать виджет ListView с изменяющимся количеством элементов. Пытался...

Как создать spinner внутри recycler view?
необходимо реализовать выпадающий список внутри recycler view. может, кто...

Добавлене View элементов в ListView в зависимости от текста
Здравствуйте, мне нужно, чтобы в зависимости от текста создавался тот или иной...

Navigation View and Toolbar? Внешный вид ListView
Дело вот в чем... Присутствует активность в которой находятся следующие...

12
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,074
10.02.2016, 08:12 2
Элементарно. Переопределяйте bindView и в нем меняйте видимость для вью. Или посылайте разные layout_item.
1
Andrey345
0 / 0 / 0
Регистрация: 09.02.2016
Сообщений: 7
10.02.2016, 12:35  [ТС] 3
А поподробней можно? или ссылку на пример использования bindview

Добавлено через 12 минут
То есть я хочу реализовать adapter без использования layout файлов
0
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,074
10.02.2016, 12:43 4
http://www.gustekdev.com/2013/05/cus...y-not-use.html
http://www.vogella.com/tutorials/AndroidListView/article.html
http://developer.alexanderklimov.ru/android/theory/arrayadapter.php
http://habrahabr.ru/post/133575/
http://dajver.blogspot.ru/2013/03/arrayadaptera-listview.html

Добавлено через 41 секунду
как это "без использования layout файлов"?

Добавлено через 2 минуты
Если известны все варианты, то делаете столько же layout.
Если view однотипные, то добавляете их в цикле.
А иначе как еще?
1
Andrey345
0 / 0 / 0
Регистрация: 09.02.2016
Сообщений: 7
10.02.2016, 13:02  [ТС] 5
Вот иммено что неизвестно количество View элементов. В этом то и вопрос :
Как заменить:
Java
1
2
3
4
5
6
7
8
 <TextView
            android:id="@+id/text1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="This is Title"
            android:textSize="25sp" />
 
SimpleAdapter(Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int {R.id.text1})
На :
Java
1
2
TextView tv=new TextView(this);
SimpleAdapter(Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int { tv })
0
Pablito
2731 / 2166 / 735
Регистрация: 12.05.2014
Сообщений: 7,575
Завершенные тесты: 1
10.02.2016, 13:21 6
то есть существует некое ViewGroup или лаяут, у которого внутри какое-то количество TextView, правильно?

если так и есть то что мешает написать что-то типа
view.getChildCount();
а потом в цикле пройтись по этим чайлдам и собрать из них массив id-шек
view.getChildAt(int pos).getId();
1
Andrey345
0 / 0 / 0
Регистрация: 09.02.2016
Сообщений: 7
10.02.2016, 13:38  [ТС] 7
Нет не так.
Есть некое количество View(TextView,ImageView,Button) в базе данных,
их нужно реализовать в списке.
Поэтому я не могу использовать шаблоны xml.
Вот я и пытаюсь запихнуть в adapter созданные программно view(TextView tv=new TextView(this));
0
Pablito
2731 / 2166 / 735
Регистрация: 12.05.2014
Сообщений: 7,575
Завершенные тесты: 1
10.02.2016, 13:51 8
то есть в конце это должно выглядеть так - кнопки, вьюшки, текстовые поля расположены в виде вертикального списка?

почему бы не сделать просто ScrollView?
внутрь него положить вертикальный LinearLayout, а потом программно напихать туда все эти элементы из базы
1
Andrey345
0 / 0 / 0
Регистрация: 09.02.2016
Сообщений: 7
10.02.2016, 13:58  [ТС] 9
Это вариант ,но не хотелось бы писать новые велосипеды.
0
Pablito
2731 / 2166 / 735
Регистрация: 12.05.2014
Сообщений: 7,575
Завершенные тесты: 1
10.02.2016, 14:03 10
ты задаешь элементарнейшие вопросы, которые у многих новичков не вызвали бы никаких затруднений в реализации, но уже рассуждаешь про велосипеды
как-то не клеится все это в кучу
0
Andrey345
0 / 0 / 0
Регистрация: 09.02.2016
Сообщений: 7
10.02.2016, 14:35  [ТС] 11
потому что в программировании я давно,а с андроидом работаю не давно и могу заглянуть вперед и сделать выводы

Добавлено через 12 минут
И на мои вопросы "новичков" почему то ты не можешь ответить
0
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,074
10.02.2016, 15:06 12
Мне кажется ТС заблудился, поможем же ему обрести себя.
Покажи нам пару вариантов экранов, иначе будем гадать месяцами.
Что за БД такая, где "есть некое количество View", речь о sqlite?
0
Andrey345
0 / 0 / 0
Регистрация: 09.02.2016
Сообщений: 7
10.02.2016, 15:55  [ТС] 13
Да sqlite.
Имееться таблица :
id type
1 text
2 Image
3 button
4 text
...
Это вьюхи одного элемента списка.
Далее цикл for (по этим записям БД)
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
{switch (type){
case "image":
ImageView iv =new ImageView(this);
//Что то типо list.add(iv);
break;
case "text":
TextView tv =new TextView(this);
//Что то типо list.add(tv);
break;
case "button":
Button bt =new Button(this);
//Что то типо list.add(bt);
break;
}
}
В итоге получаем к примеру список:
---------------------------------------------------------------------------------------
 
TextView(id=1)
                                        Button(id=3)                 ImageView(id=2)
TextView(id=4)
---------------------------------------------------------------------------------------
 
TextView(id=1)
                                        Button(id=3)                 ImageView(id=2)
TextView(id=4)
---------------------------------------------------------------------------------------
 
TextView(id=1)
                                        Button(id=3)                 ImageView(id=2)
TextView(id=4)
---------------------------------------------------------------------------------------
Естественно с разными значениями(Для этого есть другая таблица)

Добавлено через 14 минут
Из ссылки что ты мне кинул http://www.gustekdev.com/2013/05/cus...y-not-use.html
Есть что то по этой части :
No xml version
If You choose to create view in Java instead of defining it in xml Your newView method will be a bit more complex, but You don't need inflater instance.
For example if Your list will have only one text value to display it could look like this.

public class CustomCursorAdapter extends CursorAdapter {
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
TextView content = new TextView(context);
content.setTag("content");
return content;
}
0
10.02.2016, 15:55
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.02.2016, 15:55

Создание View элементов из кода и размещение их в listview
Здравствуйте, задача такая: 1) Есть массив строк. Программа читает поочереди...

Как изменять item listview не перерисовывая весь список?
Здравствуйте! Имеется активити с выводом list при помощи SimpleCursorAdapter....

Как создать ListView с двумя TextView и работать с ними
Как создать ListView с двумя TextView и работать с ними использую класс...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru