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

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

Войти
Регистрация
Восстановить пароль
 
VictorAkira
3 / 3 / 0
Регистрация: 21.03.2013
Сообщений: 71
#1

Цикл по ListView - Программирование Android

31.01.2014, 10:58. Просмотров 1035. Ответов 8
Метки нет (Все метки)

Доброго дня.
Есть ListView:
Java
1
2
3
4
    final ListView viewActionsList = (ListView) findViewById(R.id.actions);
    final String[] values = new String[] {"Мировые новости", "Новости Ватикана", "Новости России","Новости стран СНГ", "Христианские новости", "О нас"};
    final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.main_list_item, R.id.product_name, values);
    viewActionsList.setAdapter(adapter);
За отображение элемента листвью отвечает обычный текствью.
Задача: Пройтись по элементам листвью, и задать каждому свой цвет. Без нажатия. Гланая проблема пройтись по листвью. Аля setOnItemClickListener только без нажатия.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.01.2014, 10:58
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Цикл по ListView (Программирование Android):

ListView. После добавления кнопки перестал быть доступен сам ListView - Программирование Android
Кастомизировал ListView с помощью нескольких TextView. Но после того, как добавил ImageButton сам список стал недоступен для клика, а...

Listview вывод данных и переход по нажатию на другой Listview SQLite - Программирование Android
Доброго извините за название темы, долго не мог сформировать название, В общем у меня беда с пытаюсь написать программу где первый экран...

Данные из SQlite в ListView, обработка события ListView - Программирование Android
Ребят, есть БД, ListView. Надо при нажатии на строчку ListView вытащить данные int из БД. mList.setOnItemClickListener(new...

ListView, ToggleButton, SQLite, CursorAdapter. Как найти idItem в ListView, где была нажата ToggleButton? - Программирование Android
Добрый день. Затрудняюсь понять один момент: У меня есть ListView, который заполнен Items. Каждый Item - это свой XML. Пока...

Копирование данных из 1 listView во 2 listView - Программирование Android
Нужно что бы при нажатии на один элемент в первом ListView он копировался во второй ListView причём многократно.Но я использую...

Использование ListView в ListView - Программирование Android
Всем привет. Можете показать как использовать ListView в ListView, с заполнением как внешнего ListView, так и внутреннего причем с...

8
YuraAAA
1578 / 1319 / 271
Регистрация: 25.10.2009
Сообщений: 3,437
Записей в блоге: 2
31.01.2014, 13:00 #2
VictorAkira, почему не использовать свой адаптер?

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
public class MyAdapter extends BaseAdapter {
 
    private List<String> data = new ArrayList<String>();
    private LayoutInflater inflater;
 
    public MyAdapter(Context c) {
        inflater = (LayoutInflater) c.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }
 
    @Override
    public int getCount() {
        return data.size();
    }
 
    @Override
    public Object getItem(int position) {
        return data.get(position);
    }
 
    @Override
    public long getItemId(int position) {
        return position;
    }
 
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        convertView = inflater.inflate(R.layout.main_list_item, parent, false);
        String currentString = data.get(position);
        TextView cast = TextView.class.cast(convertView.findViewById(R.id.product_name));
        cast.setText(currentString);
        cast.setTextColor(Color.rgb(125, 125, position));
        return convertView;
    }
}
0
VictorAkira
3 / 3 / 0
Регистрация: 21.03.2013
Сообщений: 71
31.01.2014, 13:04  [ТС] #3
Ну я думаю есть более просто решение...
Но если нету то придется только так...
0
verylazy
Заблокирован
31.01.2014, 13:47 #4
я могу показать как это сделать, но мне кажется это как-то через ж...
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
public class MyActivity extends Activity {
 
    ListView lv; // наше листвью
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // some code here
 
        lv = (ListView) findViewById(R.id.listView1);
        final String[] arr = new String[] { "раз", "два", "три", "ололо" };
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, arr);
        lv.setAdapter(adapter);
    }
 
    @Override
    public void onWindowFocusChanged(boolean hasFocus) {
        super.onWindowFocusChanged(hasFocus);
 
        for (int i = 0; i < lv.getChildCount(); i++) {
            lv.getChildAt(i).setBackgroundColor(Color.BLUE);
        }
    }
}
если делать lv.getChildCount() в onCreate то он вернет всегда 0, поэтому мы реализовываем метод onWindowFocusChanged() и колдуем в нем

цикл, надеюсь в комментариях не нуждается?
0
angryrobot
Командир зеленых роботов
348 / 285 / 53
Регистрация: 08.10.2013
Сообщений: 565
31.01.2014, 14:22 #5
Цитата Сообщение от verylazy Посмотреть сообщение
но мне кажется это как-то через ж...
Похоже это не совсем то что нужно топикстартеру. С таким же успехом он мог бы сразу сделать фон синим просто поправив layout файл
Гораздо интересней как производить замену цвета в произвольном месте кода, а не только в onWindowFocusChanged. Задача и впрямь интересная...
0
verylazy
Заблокирован
31.01.2014, 14:25 #6
а что мешает производить эту замену в произвольном месте кода?
я привел пример и попытался объяснить, почему цикл крутился не в onCreate()
из примера видно как добраться до пунктов вьюшки и поставить им фон

чуть-чуть модифицировать цикл и можно хоть полосатыми сделать пункты этого листвью, без всяких кастомных адаптеров
1
angryrobot
Командир зеленых роботов
348 / 285 / 53
Регистрация: 08.10.2013
Сообщений: 565
31.01.2014, 14:35 #7
Цитата Сообщение от verylazy Посмотреть сообщение
а что мешает производить эту замену в произвольном месте кода?
Да ничего не мешает, просто я тупанул. Я сам пробовал делать похоже в методе onCreate и разумеется у меня ничего не вышло, ведь пункты списка в тот момент еще не были созданы, сейчас только дошло. Спасибо
0
verylazy
Заблокирован
31.01.2014, 14:41 #8
там еще есть тонкость с этим onWindowFocusChanged() - он вызывается два раза - когда на экран выводится активити и когда оно прячется, поэтому придется ставить костыль, у меня он выглядел типа так
в активити глобальная переменная boolean deflorated;
и сам метод
Java
1
2
3
4
5
6
7
8
    public void onWindowFocusChanged(boolean hasFocus) {
        super.onWindowFocusChanged(hasFocus);
        if (deflorated) {
            return;
        }
        deflorated = true;
        // some code
    }
кэп(с)
0
VictorAkira
3 / 3 / 0
Регистрация: 21.03.2013
Сообщений: 71
31.01.2014, 15:07  [ТС] #9
Ну пришлось решить проблему через свой адаптер(
0
31.01.2014, 15:07
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.01.2014, 15:07
Привет! Вот еще темы с ответами:

Переход из Listview в Listview - Программирование Android
Как сделать, что бы когда нажимаешь в главном листвью на кнопку, открывалось новое нужное(т.е. то по которому тапнули) активити с другим...

Создать программу по всем 3 видам циклов...цикл с параметром,цикл с условием,цикл,и цикл с предусловием... - Turbo Pascal
Найти сумму чисел 1 в квадрате до 10 c квадрате...операцию возведению в степень не использовать учесть особенности получения квадратного...

Как правильно скролить ListView который находится внутри другого ListView? - C++ Qt
Доброго! Впихнул один ListView во внутрль другого, получил интересный эффект... если жмакнуть по элементу верхнего ListView, то скролл...

Коллекцию, содержащуюся в ListView, перекинуть в другой ListView одним махом - C#
listView2.Items.AddRange(listView1.Items); listView1 содержит одну строчку, listView2 пуст. Какое-то левое исключение выкидывает,...


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

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

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