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

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

Войти
Регистрация
Восстановить пароль
 
Добрыня21
0 / 0 / 0
Регистрация: 06.02.2016
Сообщений: 6
#1

Кастомизация ListView - Программирование Android

06.02.2016, 23:12. Просмотров 403. Ответов 9
Метки нет (Все метки)

Добрый день.
Создаю прокручиваемый список, в каждом поле четыре строки, проблема в написании кода. Создал в ресурсе strings четыре массива string-array, и хочу что бы программа брала данные оттуда. Свою разметку создал, адаптер также описал, но не понимаю как обратиться непосредственно к строковым ресурсам для заполнения ListView. Поэтому сейчас вынужден использовать следующий вариант:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class SpisokActivity extends AppCompatActivity {
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_spisok);
 
        ListView lv;
        ArrayList<Item> data = new ArrayList<Item>();
 
            data.add(new Item("Строка1","Строка2","Строка3","Строка4"));
            lv = (ListView) this.findViewById(R.id.list);
            lv.setAdapter(new MyAdapter(this,data));
        }
}
Хотелось бы того же изящества как с однострочным списком, когда я обращался непосредственно к string-array:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_spisok);
 
        // набор данных, которые свяжем со списком
        final String[] verbs = getResources().getStringArray(
                R.array.v1);
        // получаем элемент ListView
        ListView countriesList = (ListView) findViewById(R.id.list);
 
        // создаем адаптер
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, verbs);
 
        // устанавливаем для списка адаптер
        countriesList.setAdapter(adapter);
    }
}
Подскажите, как обратиться к строковым ресурсам так же как во втором примере, а не вставлять данные прямо в код?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.02.2016, 23:12     Кастомизация ListView
Посмотрите здесь:

Кастомизация ListView - Программирование Android
http://imglink.ru/pictures/15-06-14/3d97212a44f93f016eb14cfbf868d023.jpg Как реализовать кастомизацию списка, как в офф приложении...

Кастомизация ListView - Программирование Android
Добрый день. Перерыл пол инета но так и не нашел нормальный мануал как можно скастомизировать ListView. Прошу не ругаться, реально не...

Кастомизация ListView и использование Sticky Header - Программирование Android
Использую библиотеку https://github.com/beworker/pinned-section-listview И столкнулся с вопросом по незнанию Там есть пример, делал на...

Кастомизация списков - Программирование Android
В инете есть множество примеров изменение внешнего вида ListView с помощью кастомизации и разработкой собственного адаптера. Но везде...

Кастомизация табов в actionbar - Программирование Android
необходимо чтобы табы выглядели примерно как на приложенном фото, как это можно сделать

Кастомизация прогресс-бара - Программирование Android
Добрый день. Каким образом засунуть в прогресс, вместо колора изображение? Код прилагаю: &lt;layer-list...

Кастомизация заголовока окна - Программирование Android
Лайауты имеют белый фон и тему по-умолчанию. На версии 4.1 заголовки окон не отделены визуально от самих окон и текст в них плохо виден. ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
JavaStarter
11 / 11 / 3
Регистрация: 14.05.2015
Сообщений: 52
07.02.2016, 00:15     Кастомизация ListView #2
Java
1
2
3
final ArrayAdapter<CharSequence> adapter =
 ArrayAdapter.createFromResource(getActivity(), getResources().getStringArray(R.array.string_array), R.layout.list_row);
lv.setAdapter(adapter);
Добрыня21
0 / 0 / 0
Регистрация: 06.02.2016
Сообщений: 6
07.02.2016, 14:12  [ТС]     Кастомизация ListView #3
Спасибо за совет. Сделал так:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_spisok);
 
            ListView lv;
            final ArrayAdapter<CharSequence> adapter =
                    ArrayAdapter.createFromResource(getActivity(), getResources().getStringArray(R.array.v1), // <---
                            getResources().getStringArray(R.array.v2),
                            getResources().getStringArray(R.array.v3),getResources().getStringArray(R.array.rus_word),
                            R.layout.list_item);
            lv = (ListView) this.findViewById(R.id.list);
            lv.setAdapter(adapter);
        }
}
Не могу разобраться что делать с getActivity. Пробовал поменять на this, не помогает.

Добавлено через 31 минуту
И еще вопрос. Где при такой реализации привязка к созданному мной адптеру MyAdapter?
JavaStarter
11 / 11 / 3
Регистрация: 14.05.2015
Сообщений: 52
07.02.2016, 18:39     Кастомизация ListView #4
Попробуйте так:

Java
1
2
3
4
5
6
7
ListView listView = (ListView) findViewById(R.id.listView);
 
        String [] fillist= getResources().getStringArray(R.array.array);
 
        ArrayAdapter<String> adapter = new ArrayAdapter<>(this,android.R.layout.simple_list_item_1, fillist);
 
        listView.setAdapter(adapter);//привязка адаптера к listview
Добрыня21
0 / 0 / 0
Регистрация: 06.02.2016
Сообщений: 6
09.02.2016, 21:14  [ТС]     Кастомизация ListView #5
Спасибо за ответ, но этот вариант так же не подходит под мою задачу. Ладно, не беда. Реализую свой первый вариант без привлечения ресурсов из strings.
Добрыня21
0 / 0 / 0
Регистрация: 06.02.2016
Сообщений: 6
16.02.2016, 21:47  [ТС]     Кастомизация ListView #6
Здравствуйте, у меня ещё один вопрос:
Изначально мой код активности выглядел таким образом:
public class SpisokActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_spisok);

ListView lv;
ArrayList data = new ArrayList();

data.add(new Item(«1», «2», «3», «4»));
data.add(new Item(«5», «6», «7», «8»));
lv = (ListView) this.findViewById(R.id.list);
lv.setAdapter(new MyAdapter(this, data));
}
}
Код рабочий, но встал вопрос с отработкой нажатия, тогда я написал вот так:
public class SpisokActivity extends android.app.ListActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_spisok);

ListView lv;
ArrayList data = new ArrayList();

data.add(new Item(«1», «2», «3», «4»));
data.add(new Item(«5», «6», «7», «8»));
lv = (ListView) this.findViewById(R.id.list);
lv.setAdapter(new MyAdapter(this, data));
}
// Обработка нажатия
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
}
}
То есть, что бы добавить метод onListItemClick я изменил активность AppCompatActivity на android.app.ListActivity. Ошибки в коде AndroidStudio не выдает, на телефон и эмулятор программа устанавливается, но при попытке обратиться к данной активности программа вылетает. Уж голову сломал, а решение не дается. Возможно не учитываю какую-либо досадную мелочь. Подскажите пожалуйста, может кто сталкивался с такой проблемой? Причем если работать с однострочным ListView такой проблемы нет, возможно это как-то связано с применением ArrayList.
JavaStarter
11 / 11 / 3
Регистрация: 14.05.2015
Сообщений: 52
17.02.2016, 18:10     Кастомизация ListView #7
Не виден код ошибки, но вылетает скорее всего потому, что при имплементации в разметке ListActivity для ListView нужно указать:
XML
1
android:id="@android:id/list"
После этого уже не нужно в самой активити ссылаться на этот ListView, то есть не нужно дописывать lv = (ListView) this.findViewById(R.id.list); Андроид автоматически определяет: если есть ListActivity, значит есть ListView c id = "@android:id/list".
Добрыня21
0 / 0 / 0
Регистрация: 06.02.2016
Сообщений: 6
18.02.2016, 15:23  [ТС]     Кастомизация ListView #8
Но если я не укажу lv = (ListView) this.findViewById(R.id.list), то как мне запустить адаптер lv.setAdapter(new MyAdapter(this, data));? Попробовал тогда прописать так: lv = (ListView) this.findViewById(R.layout.activity_spisok);, ругается зараза.
JavaStarter
11 / 11 / 3
Регистрация: 14.05.2015
Сообщений: 52
18.02.2016, 18:13     Кастомизация ListView #9
Просто setListAdapter(new MyAdapter(this, data));
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.02.2016, 18:29     Кастомизация ListView
Еще ссылки по теме:

Кастомизация стандартных вьювов - плагиат или нет? - Программирование Android
Вопрос совершенно не относящийся к программированию, но вроде уместный для данной ветки. Допусти есть стандартный вьюв Holo Light, он меня...

id ListView - Программирование Android
как дать каждому item уникальный id d listview и использовать его для проверки базы данных помогите заранее спасибо

ListView - Программирование Android
Добрый день. У меня есть лист ListView. Данные для заполнения он берет из таблицы БД. Таблица имеет два поля (имя, статус выполнения)....

Listview - Программирование Android
Добрый день, В структуре ListView есть два элемента,которые он показывает Item и SubItem. В Item вставить значение не проблема,всё...

из БД в ListView - Программирование Android
Пишу приложение афишы кинотеатра. В базе данных есть стобцы: название, жанр, страна, время показа. Вот эти данные думаю подгружать...


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

Или воспользуйтесь поиском по форуму:
Добрыня21
0 / 0 / 0
Регистрация: 06.02.2016
Сообщений: 6
18.02.2016, 18:29  [ТС]     Кастомизация ListView #10
Я уже сам разобрался что нужно применить setListAdapter, поменял и всё заработало должным образом. JavaStarter, спасибо за советы, реально помогло.
Yandex
Объявления
18.02.2016, 18:29     Кастомизация ListView
Ответ Создать тему
Опции темы

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