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

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

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

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

31.01.2014, 10:58. Просмотров 864. Ответов 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 только без нажатия.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.01.2014, 10:58     Цикл по ListView
Посмотрите здесь:

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

Listview в listview - Программирование Android
Добрый.. вечер. Вопрос такого плана - есть listview созданный через кастомный адаптер, в элементах этого listview есть еще один listview,...

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

ListView - Программирование Android
Пытаюсь сделать по аналогии с уроком MySql + Android. Он есть проблема: ListView lv = getListView(); getListView подсвечивается...

Поиск по listview - Программирование Android
Есть listview в котором около 250 позиций. Вывожу все при полощи Custom Adapter. Как осуществить поиск по нему через EditText?

ListView и image - Программирование Android
Есть список ListView у списка есть adapter (XML файл) в нем TextViev и хотелось бы добавить Image View но проблема в том что не у всех...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
YuraAAA
1567 / 1309 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
31.01.2014, 13:00     Цикл по ListView #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;
    }
}
VictorAkira
3 / 3 / 0
Регистрация: 21.03.2013
Сообщений: 71
31.01.2014, 13:04  [ТС]     Цикл по ListView #3
Ну я думаю есть более просто решение...
Но если нету то придется только так...
verylazy
Заблокирован
31.01.2014, 13:47     Цикл по ListView #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() и колдуем в нем

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

чуть-чуть модифицировать цикл и можно хоть полосатыми сделать пункты этого листвью, без всяких кастомных адаптеров
angryrobot
Командир зеленых роботов
346 / 283 / 53
Регистрация: 08.10.2013
Сообщений: 564
31.01.2014, 14:35     Цикл по ListView #7
Цитата Сообщение от verylazy Посмотреть сообщение
а что мешает производить эту замену в произвольном месте кода?
Да ничего не мешает, просто я тупанул. Я сам пробовал делать похоже в методе onCreate и разумеется у меня ничего не вышло, ведь пункты списка в тот момент еще не были созданы, сейчас только дошло. Спасибо
verylazy
Заблокирован
31.01.2014, 14:41     Цикл по ListView #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
    }
кэп(с)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.01.2014, 15:07     Цикл по ListView
Еще ссылки по теме:

Оформление ListView - Программирование Android
Ребят подскажите как вот такое оформление делают у ListView или это не ListView? Может ссылочками ткнете. Всему буду рад.

ListView с датами - Программирование Android
Есть дата рождения(выбирается пользователем через DialogDatePicker), отталкиваясь от нее нужно рассчитать на перед расписание прививок по...

Не отображается ListView - Программирование Android
public class ListViewActivity extends Activity { private static final String TAG = &quot;Vkfunc&quot;; SharedPreferences mSettings; ...

Работа с Listview - Программирование Android
Доброго времени суток! Передо мной возникла такая проблема: Необходимо сделать так, чтобы при нажатии на разные элементы listview...


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

Или воспользуйтесь поиском по форуму:
VictorAkira
3 / 3 / 0
Регистрация: 21.03.2013
Сообщений: 71
31.01.2014, 15:07  [ТС]     Цикл по ListView #9
Ну пришлось решить проблему через свой адаптер(
Yandex
Объявления
31.01.2014, 15:07     Цикл по ListView
Ответ Создать тему
Опции темы

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