Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
korolevsky
0 / 0 / 0
Регистрация: 03.01.2015
Сообщений: 57
1

Заполнение ListView данными из ArrayList

25.10.2017, 21:04. Просмотров 610. Ответов 19

Привет! Помогите решить проблему. Есть класс в котором настроен ArrayList:
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
public class Colors {
 
    String name;
    Integer r;
    Integer g;
    Integer b;
    String hex;
    String cmyk;
    Boolean luminous;
    Boolean metallic;
 
    public Colors (String name, Integer r, Integer g, Integer b, String hex, String cmyk, Boolean luminous, Boolean metallic) {
        setName(name);
        setR(r);
        setG(g);
        setB(b);
        setHex(hex);
        setCmyk(cmyk);
        setLuminous(luminous);
        setMetallic(metallic);
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
    public String getName() {
        return name;
    }
 
    public void setR(Integer r) {
        this.r = r;
    }
 
    public Integer getR() {
        return r;
    }
 
    public void setG(Integer g) {
        this.g = g;
    }
 
    public Integer getG() {
        return g;
    }
 
    public void setB(Integer b) {
        this.b = b;
    }
 
    public Integer getB() {
        return b;
    }
 
    public void setHex(String hex) {
        this.hex = hex;
    }
 
    public String getHex() {
        return hex;
    }
 
    public void setCmyk(String cmyk) {
        this.cmyk = cmyk;
    }
 
    public String getCmyk() {
        return cmyk;
    }
 
    public void setLuminous(Boolean luminous) {
        this.luminous = luminous;
    }
 
    public Boolean getLuminous() {
        return luminous;
    }
 
    public void setMetallic(Boolean metallic) {
        this.metallic = metallic;
    }
 
    public Boolean getMetallic() {
        return metallic;
    }
 
    List<Colors> colorsArray = new ArrayList<>();
 
    public Colors() {
        colorsArray.add(new Colors("1000", 205, 186, 136, "#cdba88", "5, 10, 40, 10", false, false));
        colorsArray.add(new Colors("1001", 208, 176, 132, "#d0b084", "5, 20, 40, 10", false, false));
        colorsArray.add(new Colors("1002", 210, 170, 109, "#d2aa6d", "5, 20, 50, 10", false, false));
    }
 
}
В активити есть listview с настроенными textview, imageview и т.д. listview настроилась, ячейки отображаются в полном объеме arraylist:
Java
1
2
3
4
@Override
        public int getCount() {
            return colors. colorsArray.size();
        }
Как теперь заполнить ячейки соответствующими данными? Как получить доступ к, например, name и т.д. Должно быть что-то на подобии этого:
Java
1
textView_name.setText(colors.name(i));
но эта конструкция не катит.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.10.2017, 21:04
Ответы с готовыми решениями:

Заполнение ArrayList данными из SQLite
Доброго времени суток! Есть заполняющаяся пользователем база данных mytable. В MainActivity...

Как связать ArrayList, ListView и AsynkTask?
В AsinkTask в doInBackGround у меня есть массив final ArrayList&lt;String&gt; vkmass = new...

Рэндомное заполнение ArrayList
Здравствуйте как из одного Array заполнить второй array через random пытался так final Random...

Заполнение массива ArrayList после проверки, если он пустой
Здравствуйте, форумчане! Проблема в следующем: Загружаю массив ArrayList из файла final...

Заполнение ListView из БД
Есть одна активити, в ней 2 текстовых поля и кнопка, отправляющая содержимое этих полей как строку...

19
ExFau$t
827 / 669 / 183
Регистрация: 08.05.2012
Сообщений: 3,248
25.10.2017, 22:29 2
Цитата Сообщение от korolevsky Посмотреть сообщение
эта конструкция не катит.
Ну потому что имя из модели получается методом getName(). При условии, конечно, что этот name как-то туда уже попал до этого.
0
korolevsky
0 / 0 / 0
Регистрация: 03.01.2015
Сообщений: 57
26.10.2017, 10:59  [ТС] 3
Цитата Сообщение от ExFau$t Посмотреть сообщение
Ну потому что имя из модели получается методом getName(). При условии, конечно, что этот name как-то туда уже попал до этого.
С этим согласен, но конструкция с getName() тоже не дает результата. Есть предчувствие, что нужно циклом пробежаться по Colors и потом только извлечь данные, но не пойму как это сделать... А может я и не прав. Подскажите, пожалуйста.

Добавлено через 3 часа 27 минут
Хоть ты тресни, но colors.getName возвращает null
0
ExFau$t
827 / 669 / 183
Регистрация: 08.05.2012
Сообщений: 3,248
26.10.2017, 11:19 4
Да потому, что модель надо инициализировать, закинуть туда имя setName() и только потом достать его getName().
0
26.10.2017, 11:19
korolevsky
0 / 0 / 0
Регистрация: 03.01.2015
Сообщений: 57
26.10.2017, 11:36  [ТС] 5
Цитата Сообщение от ExFau$t Посмотреть сообщение
Да потому, что модель надо инициализировать, закинуть туда имя setName() и только потом достать его getName().
У меня же заранее заполненный arraylist... мне нужно только извлекать... можете привести пример на моем коде? Честно, совсем запутался
0
Pablito
2845 / 2263 / 762
Регистрация: 12.05.2014
Сообщений: 7,931
Завершенные тесты: 1
26.10.2017, 11:49 6
Цитата Сообщение от korolevsky Посмотреть сообщение
на моем коде
на каком твоем коде?
там нет кода, только какой-то стрёмный класс Color, автор которого не знает про примитивные типы и о том, что 80% того что там напедалировано, можно сделать с помощью стардартного класса Color
0
ExFau$t
827 / 669 / 183
Регистрация: 08.05.2012
Сообщений: 3,248
26.10.2017, 11:53 7
Пример чего? Ты даже не можешь объяснить, что тебе нужно извлекать. Ты спросил про Name - я ответил. Я так понимаю нужно использовать другой конструктор, чтобы извлекать данные помимо хардкодного листа.
0
korolevsky
0 / 0 / 0
Регистрация: 03.01.2015
Сообщений: 57
26.10.2017, 12:24  [ТС] 8
Цитата Сообщение от Pablito Посмотреть сообщение
автор которого не знает
Именно для этого и существуют форумы, чтобы авторы, которые не знают, могли спрашивать у тех, кто знает. Наверняка когда-то Вы тоже что-то не знали.

Добавлено через 7 минут
Цитата Сообщение от ExFau$t Посмотреть сообщение
Пример чего? Ты даже не можешь объяснить, что тебе нужно извлекать.
В классе я хочу разместить заранее заполненный arraylist. На основании его в активити буду формировать listview, в каждую ячейку которого будет выводится информация String name;
Integer r;
Integer g;
Integer b;
String hex;
String cmyk;
Boolean luminous;
Boolean metallic; в соответствующие textview. В активити создаю экземпляр класса
Java
1
Colors colors = new Colors();
. Потом отображаю listview соответствующей длины:
Java
1
colors.arrayColors.size(i)
. Не понимаю как можно извлечь name, r и т.д. в соответствующую порядковому номеру ячейку listview
0
ExFau$t
827 / 669 / 183
Регистрация: 08.05.2012
Сообщений: 3,248
26.10.2017, 12:35 9
Ты вообще внимательно читаешь? Ладно давай так: у тебя здесь, ну скажем так, папка с переменными, они как и обычные переменные должны быть чему-нибудь инициализированы, чтобы их можно было получить. Конструктор внизу класса ни к селу, ни к городу, чтобы данные можно было извлекать, его надо привести к виду верхнего конструктора, то есть добавить методы setName("1000") и т.п.

Добавлено через 1 минуту

Не по теме:

Хотя это всё делается совершенно по-другому...

0
korolevsky
0 / 0 / 0
Регистрация: 03.01.2015
Сообщений: 57
26.10.2017, 12:42  [ТС] 10
Цитата Сообщение от ExFau$t Посмотреть сообщение
Хотя это всё делается совершенно по-другому...
Подскажите, пожалуйста, если все можно сделать проще. Ранее я писал на Swift, там все проще. Создал отдельный класс с массивом кортежей, сокращенный пример:
Objective-C
1
let colorsArray: [String: name, Int: r, Int: g] = [("1000", 1, 2), ("2000", 2, 3)]
и т.д. Ну а далее тупо стучался к значениям по именам. Может на Java тоже все можно сделать проще?
0
Pablito
2845 / 2263 / 762
Регистрация: 12.05.2014
Сообщений: 7,931
Завершенные тесты: 1
26.10.2017, 12:58 11
Цитата Сообщение от korolevsky Посмотреть сообщение
Ранее я писал на Swift
Цитата Сообщение от korolevsky Посмотреть сообщение
let colorsArray: [String: name, Int: r, Int: g] = [("1000", 1, 2), ("2000", 2, 3)]
так на Swift или все-таки Obj-C ?

то arrayColors, потом colorsArray...
Java
1
colors.colorsArray.get(i).getName();
0
korolevsky
0 / 0 / 0
Регистрация: 03.01.2015
Сообщений: 57
26.10.2017, 13:06  [ТС] 12
Цитата Сообщение от Pablito Посмотреть сообщение
так на Swift или все-таки Obj-C ?
то arrayColors, потом colorsArray...
На Swift. Здесь нет шаблона вставки кода свифт, поэтому применил obj c. Сокращенный пример просто писал на скорую руку, поэтому назвал по другому. Да, везде colorsArray
0
ExFau$t
827 / 669 / 183
Регистрация: 08.05.2012
Сообщений: 3,248
26.10.2017, 13:27 13
Цитата Сообщение от korolevsky Посмотреть сообщение
let colorsArray: [String: name, Int: r, Int: g] = [("1000", 1, 2), ("2000", 2, 3)]
Java
1
Сolors colorsArray = new Colors("1000",1,2);
Сложно?
0
korolevsky
0 / 0 / 0
Регистрация: 03.01.2015
Сообщений: 57
26.10.2017, 15:04  [ТС] 14
Спасибо! Можете посмотреть на такую конструкцию (пример):
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
import java.util.*;  
class Book {  
int id;  
String name,author,publisher;  
int quantity;  
public Book(int id, String name, String author, String publisher, int quantity) {  
    this.id = id;  
    this.name = name;  
    this.author = author;  
    this.publisher = publisher;  
    this.quantity = quantity;  
}  
}  
public class ArrayListExample {  
public static void main(String[] args) {  
    //Creating list of Books  
    List<Book> list=new ArrayList<Book>();  
    //Creating Books  
    Book b1=new Book(101,"Let us C","Yashwant Kanetkar","BPB",8);  
    Book b2=new Book(102,"Data Communications & Networking","Forouzan","Mc Graw Hill",4);  
    Book b3=new Book(103,"Operating System","Galvin","Wiley",6);  
    //Adding Books to list  
    list.add(b1);  
    list.add(b2);  
    list.add(b3);  
    //Traversing list  
    for(Book b:list){  
        System.out.println(b.id+" "+b.name+" "+b.author+" "+b.publisher+" "+b.quantity);  
    }  
}  
}
Думаю, что она здорово подходит к решению моей проблемы. Как в этом случае из активити получить доступ к list?
0
ExFau$t
827 / 669 / 183
Регистрация: 08.05.2012
Сообщений: 3,248
26.10.2017, 15:09 15
Скопировать строки с 17 по 25 в активити, с 2 по 13 вынести в отдельный класс.
Ты бы хоть пару уроков для начинающих пролистал.
0
korolevsky
0 / 0 / 0
Регистрация: 03.01.2015
Сообщений: 57
26.10.2017, 15:21  [ТС] 16
Так я читаю и задаю вопросы. ) Делаю строго по правилам. Создал отдельный файл с классом (не хочу захламлять активити ибо в списке будет 350 значений. В активити пытаюсь создать экземпляр класса
Java
1
Book book = new Book();
ОШИБКА. Спасибо за Ваше терпение!
0
ExFau$t
827 / 669 / 183
Регистрация: 08.05.2012
Сообщений: 3,248
26.10.2017, 15:34 17
Какая ошибка и что в классе?
Если тот же из прошлого сообщения, то в конструктор надо параметры передать, как это сделано в строках 19-21.
0
korolevsky
0 / 0 / 0
Регистрация: 03.01.2015
Сообщений: 57
26.10.2017, 15:45  [ТС] 18
Использую пример Book, отрабатываю все на нем. Ошибка: Book() in Book cannot be applied to: далее идет перечисление параметров конструктора. Неужели все параметры для 350 значений мне нужно будет записать в конструктор???. Мне кажется, что я копаю яму в яме . У меня ведь простая задача - создать отдельный файл с классом, в котором будет только заранее наполненный ArrayList с аналогом кортежей в swift, к которому я смогу получить доступ из экземпляра класса в активити и вывести эти данные в listview. Может все нужно делать проще?
0
ExFau$t
827 / 669 / 183
Регистрация: 08.05.2012
Сообщений: 3,248
26.10.2017, 18:32 19
Ну так и засунь эти параметры в конструктор внутри класса, а поля убери.
Java
1
2
3
4
5
6
7
public Book() {  
    this.id = 101;  
    this.name = "Let us C";  
    this.author = "Yashwant Kanetkar";  
    this.publisher = "BPB";  
    this.quantity = 8;  
}
Неужели это не очевидно, и swift и java работают на ООП.
0
korolevsky
0 / 0 / 0
Регистрация: 03.01.2015
Сообщений: 57
26.10.2017, 20:01  [ТС] 20
Если я уберу поля, то как тогда будет работать эта часть кода?
Java
1
2
3
Book b1=new Book(101,"Let us C","Yashwant Kanetkar","BPB",8);  
    Book b2=new Book(102,"Data Communications & Networking","Forouzan","Mc Graw Hill",4);  
    Book b3=new Book(103,"Operating System","Galvin","Wiley",6);
Поля убрал и конечно теперь ничего не работает. Или я действительно туплю, или не могу уловить ход Ваших мыслей.
0
26.10.2017, 20:01
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.10.2017, 20:01

Заполнение ListView в AsyncTask
Нужно заполнить ListView картинками, которые скачиваются в AsyncTask с помощью Picasso. Картинки...

Некорректное заполнение ListView
Есть 2 фрагмента, в первом лист заполняемый с помощью TypedArray. Когда я перехожу по позиции листа...

Заполнение ListView из HashMap
Добрый день. Столкнулся с некоторой проблемой при наполнении ListView с помощью HashMap. Проблема...


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

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

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