Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 06.02.2016
Сообщений: 6

Кастомизация ListView

06.02.2016, 23:12. Показов 1290. Ответов 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);
    }
}
Подскажите, как обратиться к строковым ресурсам так же как во втором примере, а не вставлять данные прямо в код?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.02.2016, 23:12
Ответы с готовыми решениями:

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

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

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

9
11 / 11 / 4
Регистрация: 14.05.2015
Сообщений: 52
07.02.2016, 00:15
Java
1
2
3
final ArrayAdapter<CharSequence> adapter =
 ArrayAdapter.createFromResource(getActivity(), getResources().getStringArray(R.array.string_array), R.layout.list_row);
lv.setAdapter(adapter);
0
0 / 0 / 0
Регистрация: 06.02.2016
Сообщений: 6
07.02.2016, 14:12  [ТС]
Спасибо за совет. Сделал так:
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?
0
11 / 11 / 4
Регистрация: 14.05.2015
Сообщений: 52
07.02.2016, 18:39
Попробуйте так:

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
0
0 / 0 / 0
Регистрация: 06.02.2016
Сообщений: 6
09.02.2016, 21:14  [ТС]
Спасибо за ответ, но этот вариант так же не подходит под мою задачу. Ладно, не беда. Реализую свой первый вариант без привлечения ресурсов из strings.
0
0 / 0 / 0
Регистрация: 06.02.2016
Сообщений: 6
16.02.2016, 21:47  [ТС]
Здравствуйте, у меня ещё один вопрос:
Изначально мой код активности выглядел таким образом:
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.
0
11 / 11 / 4
Регистрация: 14.05.2015
Сообщений: 52
17.02.2016, 18:10
Не виден код ошибки, но вылетает скорее всего потому, что при имплементации в разметке ListActivity для ListView нужно указать:
XML
1
android:id="@android:id/list"
После этого уже не нужно в самой активити ссылаться на этот ListView, то есть не нужно дописывать lv = (ListView) this.findViewById(R.id.list); Андроид автоматически определяет: если есть ListActivity, значит есть ListView c id = "@android:id/list".
1
0 / 0 / 0
Регистрация: 06.02.2016
Сообщений: 6
18.02.2016, 15:23  [ТС]
Но если я не укажу lv = (ListView) this.findViewById(R.id.list), то как мне запустить адаптер lv.setAdapter(new MyAdapter(this, data));? Попробовал тогда прописать так: lv = (ListView) this.findViewById(R.layout.activity_spis ok);, ругается зараза.
0
11 / 11 / 4
Регистрация: 14.05.2015
Сообщений: 52
18.02.2016, 18:13
Просто setListAdapter(new MyAdapter(this, data));
0
0 / 0 / 0
Регистрация: 06.02.2016
Сообщений: 6
18.02.2016, 18:29  [ТС]
Я уже сам разобрался что нужно применить setListAdapter, поменял и всё заработало должным образом. JavaStarter, спасибо за советы, реально помогло.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.02.2016, 18:29
Помогаю со студенческими работами здесь

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

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

кастомизация приложения
Когда вся техническая часть приложения написана и работает, остаётся только сделать приложение уникальным внешне, то есть превратить его из...

Кастомизация SeekBar?
Добрый день! нужно кастомизировать seekbar, знаю (видел) много примеров, но как сделать &quot;прогресс до&quot; и &quot;прогресс...

Кастомизация Spinner
Пытаюсь изменить внешний вид spinner Сделал для него стиль вида &lt;style name=&quot;spinner&quot;&gt; &lt;item...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru