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

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

Войти
Регистрация
Восстановить пароль
 
AlexRu18
2 / 2 / 0
Регистрация: 29.01.2015
Сообщений: 101
#1

Массив картинок - Android

07.10.2016, 23:47. Просмотров 212. Ответов 4
Метки нет (Все метки)

Имеется 18 изображений в drawable.
Создал строковый массив в виде ссылок на картинки
XML
1
2
3
4
 <string-array name="cyPs">
        <item>@drawable/Pic1</item>
        <item>@drawable/Pic2</item>
</string-array>
Узнал что есть TypedArray, а правильно реализовать не смог.

Также есть класс Product
Java
1
2
3
4
5
6
7
8
9
10
public class Product {
    String cyNm;
    String cySub;
    int cyImg;
    Product(String _cyNa, String _cySubNa, int _cyImge) {
        cyNm = _cyNa;
        cySub = _cySubNa;
        cyImg = _cymImge;
    }
}
И есть выборка в классе ChoiseAdapter
Java
1
2
3
        ((TextView) view.findViewById(R.id.tvDescr)).setText(p.cyNm);
        ((TextView) view.findViewById(R.id.tvSubDescr)).setText(p.cySub);
        ((ImageView)view.findViewById(R.id.ivImage)).setImageDrawable(p.cyImg);
И собственно вопрос. Как можно выборкой брать картинки (например из ссылочного массива)?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.10.2016, 23:47     Массив картинок
Посмотрите здесь:

Android Масштабирование картинок из drawable
Android Получение списка картинок
Android Динамическое заполнение массива картинок
Позиционирование картинок Android
Android Книга из картинок
Локализация картинок Android
Быстрая подгрузка картинок Android
Импорт картинок из галереи Android
Черные квадраты вместо картинок Android
Android Слайдер картинок, в виде карусели
Слайдшоу, листание картинок по таймеру Android
Способы вывода Видео и Картинок Android

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
vxg
Модератор
3019 / 1821 / 188
Регистрация: 13.01.2012
Сообщений: 6,902
08.10.2016, 09:49     Массив картинок #2
AlexRu18, ваша задача настолько интересная что хочется спросить что же вы на самом деле такое делаете что приходится так вот через спину пятку почесывать...
fraley
92 / 92 / 32
Регистрация: 24.05.2015
Сообщений: 277
08.10.2016, 10:36     Массив картинок #3
Я не уверен что это хорошее решение, в одном из проектов я воспользовался таким решением - если заранее известны получаемые параметры, они неизменны и один из них уникальный, то можно по имени этого параметра дать имена картинкам в папке drawable. И соответственно после получения данных извлекаем уникальное имя, на всякий случай преобразуем в нижний регистр и вставляем в ImageView таким образом:
Java
1
2
String your_image=unique_name.toLowerCase();
imageView.setImageResource(getResources().getIdentifier("drawable/" + your_image, null, getPackageName()));
AlexRu18
2 / 2 / 0
Регистрация: 29.01.2015
Сообщений: 101
08.10.2016, 12:10  [ТС]     Массив картинок #4
vxg, Тут дело в том что если бы у меня был преподаватель, то мне бы всё это давалось проще, быстрее и разумнее. А я только учусь, совершенно самостоятельно. У меня есть задача, я нашёл вариант её решения. К сожалению других вариантов я не обнаружил.

Добавлено через 17 минут
fraley, Немного не понял.
У меня есть цикл, где я из массива беру названия и ссылки на картинки
Java
1
2
3
4
5
6
7
8
9
10
11
void fillData() {
        for (int i = 1; i <= 17; i++) {
            String[] cySerNmArr = getResources().getStringArray(R.array.cySerNm);
            String[] cySerSubNmArr = getResources().getStringArray(R.array.cySerSubNm);
 
            TypedArray cySerPicsArr = getResources().obtainTypedArray(R.array.cyPics);
 
            products.add(new Product(cySerNmArr[i], cySerSubNmArr[i],
                    cySerPicsArr[i]));
        }
 }
А вставка в View идет через класс Product в классе Choise
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    public View getView(int position, View convertView, ViewGroup parent) {
        // используем созданные, но не используемые view
        View view = convertView;
        if (view == null) {
            view = lInflater.inflate(R.layout.cy_item, parent, false);
        }
 
        Product p = getProduct(position);
 
        // заполняем View в пункте списка данными из товаров: наименование, под.
        // и картинка
        ((TextView) view.findViewById(R.id.tvDescr)).setText(p.cyNm);
        ((TextView) view.findViewById(R.id.tvSubDescr)).setText(p.cySubNm);
        ((ImageView)view.findViewById(R.id.ivImage)).setImageDrawable(p.cyImg);  //работает только с 1 рисунком, не с массивом
 
        return view;
    }
Паблито
2011 / 1753 / 545
Регистрация: 12.05.2014
Сообщений: 6,207
Завершенные тесты: 1
08.10.2016, 14:11     Массив картинок #5
Сообщение было отмечено автором темы, экспертом или модератором как ответ
нормальные решение, только я так и не понял в чем проблема?
если реально нужен массив картинок то можно сделать так
Java
1
2
3
4
5
6
        final ArrayList<Drawable> list = new ArrayList<>();
        final TypedArray typedArray = c.getResources().obtainTypedArray(R.array.icon_drawables);
        for (int i = 0; i < typedArray.length(); i++) {
            list.add(typedArray.getDrawable(i));
        }
        typedArray.recycle();
Yandex
Объявления
08.10.2016, 14:11     Массив картинок
Ответ Создать тему
Опции темы

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