Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Andrey345
0 / 0 / 0
Регистрация: 09.02.2016
Сообщений: 7
#1

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

09.02.2016, 19:51. Просмотров 676. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как создать список (ListView) с динамическим количеством передаваемых View? (Программирование Android):

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

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

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

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

Navigation View and Toolbar? Внешный вид ListView - Программирование Android
Дело вот в чем... Присутствует активность в которой находятся следующие компоненты @Override protected void onCreate(Bundle...

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

12
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,071
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,071
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
2499 / 1983 / 618
Регистрация: 12.05.2014
Сообщений: 6,925
Завершенные тесты: 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
2499 / 1983 / 618
Регистрация: 12.05.2014
Сообщений: 6,925
Завершенные тесты: 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
2499 / 1983 / 618
Регистрация: 12.05.2014
Сообщений: 6,925
Завершенные тесты: 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,071
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
Привет! Вот еще темы с ответами:

Как изменять item listview не перерисовывая весь список? - Программирование Android
Здравствуйте! Имеется активити с выводом list при помощи SimpleCursorAdapter. При нажатии на любой item переносит в другой активити, где...

Как создать ListView с двумя TextView и работать с ними - Программирование Android
Как создать ListView с двумя TextView и работать с ними использую класс Adapter(Ну или чем то похожим если такое существует).

Your content must have a ListView whose id attribute is 'android.R.id.list' - как правильно создать адаптор ? - Программирование Android
Добрый день. Помогите разобраться с вопросом. Как правильно формировать адаптер для ListView? беру данные из BD. Результат у меня...

Как сделать параметр view table динамическим? - SQL Server
Привет всем. Подскажитые как можно делат критерия динамичним.(в Views)


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

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

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