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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 28, средняя оценка - 4.86
PeterBox
0 / 0 / 0
Регистрация: 08.02.2013
Сообщений: 8
#1

ListView: подсветка выбранного элемента - Программирование Android

03.08.2013, 17:23. Просмотров 3786. Ответов 7
Метки нет (Все метки)

В активити есть несколько списков со своей разметкой.
Пересмотрел кучу примеров, но у самого что-то не получается оставить после нажатия подсвеченым элемент ListView.
Кликните здесь для просмотра всего текста

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
35
36
37
38
39
......
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_zakaz_item);
.....    
        katItemList = new ArrayList<HashMap<String, String>>();
        ListView lv = (ListView) findViewById(R.id.list_kat);
        lv.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                ListView lv = (ListView) findViewById(R.id.list_kat);
                lv.setItemChecked(position, true);
                                // setItemChecked отрабатывает
                Log.d("lv.getCheckedItemPosition", lv.getCheckedItemPosition()+"");
 
            }
        });
.......
        //данные для списка получаются после запроса
        protected void onPostExecute(String file_url) {
 
            // updating UI from Background Thread
            runOnUiThread(new Runnable() {
                public void run() {
....
                    ListAdapter adapter1 = new SimpleAdapter(ZakazItem.this,
                            katItemList, R.layout.list_kat, new String[] {
                                    TAG_ID,TAG_KT_ID, TAG_KT_NAME },
                            new int[] { R.id._id, R.id.kt_id, R.id.kt_name });
                    // updating listview
 
                    ListView listView1 = (ListView) findViewById(R.id.list_kat);
                    listView1.setAdapter(adapter1);
                    listView1.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
 
                }
            });
        }


часть разметки активити
Кликните здесь для просмотра всего текста
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal" >
 
    <ListView
        android:id="@+id/list_kat"
        android:layout_width="145dp"
        android:layout_height="match_parent"
 
    </ListView>
 
</LinearLayout>


разметка списка:
Кликните здесь для просмотра всего текста
XML
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
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:weightSum="5" 
    android:background="@drawable/list_kat_background">
 
        <TextView
            android:id="@+id/_id"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:visibility="gone" />
        <TextView
            android:id="@+id/kt_id"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:visibility="gone" />
          
            <TextView
                android:id="@+id/kt_name"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:paddingLeft="6dip"
                android:paddingTop="6dip"
                android:textSize="14dip" />
 
</LinearLayout>


разметка list_kat_background
XML
1
2
3
4
5
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@color/redColor" android:state_checked="true" />  
    <item android:drawable="@color/greenColor" android:state_pressed="true"/>
 </selector>
Подскажите, что я пропустил?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.08.2013, 17:23     ListView: подсветка выбранного элемента
Посмотрите здесь:

ListView подсветка выделенного пункта - Программирование Android
Всем доброго времени суток! Понимаю, вопрос нубский, но никак не получается сделать navigation drawer с listview, в котором...

Изменил фон для Custom ListView не работает подсветка при нажатии - Программирование Android
Для каждого четного Custom ListView устанавливаю цвет фона : if ((position % 2)!=0) ...

Узнать порядковый номер выбранного элемента - Программирование Android
Добавляю заранее неизвестное количество Radio Button в Radio Group. Добавляю так: private RadioButton newRadioButton(Context context,...

Замена элемента в ListView - Программирование Android
Доброго времени суток, форумчане! Столкнулся с проблемой есть ListView у которого все элементы это TextView, как запрограммировать чтобы...

выделение элемента в ListView - Программирование Android
Подскажите, что я делаю не так? У меня в кастомном диалоге создается и заполняется список, при его отображении необходимо чтоб по умолчанию...

Скрытие элемента ListView - Программирование Android
Заполняю своим адаптером, унаследованным от BaseAdapter. В качестве item использую свой класс который имеет поле isEnable - если оно равно...

Оформление элемента списка ListView - Программирование Android
Здравствуйте. Подскажите, как можно добиться результата, показанного на рисунке 1 (это в Paint подрисовано :) ) У меня сейчас выглядит...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
03.08.2013, 18:02     ListView: подсветка выбранного элемента #2
Java
1
2
3
4
5
6
7
8
// Tell the list view to show one checked/activated item at a time.
getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);
 
 @Override
    protected void onListItemClick(ListView l, View v, int position, long id) {
        // Make the newly clicked item the currently selected one.
        getListView().setItemChecked(position, true);
    }
PeterBox
0 / 0 / 0
Регистрация: 08.02.2013
Сообщений: 8
03.08.2013, 18:57  [ТС]     ListView: подсветка выбранного элемента #3
У меня активити не на базе ListActivity, соответственно getListView отсутствует. Надо создать свой адаптер и определить в нем getView?
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
03.08.2013, 19:04     ListView: подсветка выбранного элемента #4
нужно просто использовать ListView, неважно каким способом вы его достаете.
PeterBox
0 / 0 / 0
Регистрация: 08.02.2013
Сообщений: 8
03.08.2013, 19:13  [ТС]     ListView: подсветка выбранного элемента #5
getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);
у меня:
Java
1
2
3
                  ListView listView1 = (ListView) findViewById(R.id.list_kat);
                    listView1.setAdapter(adapter1);
                    listView1.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
getListView().setItemChecked(position, true);
у меня:
Java
1
2
ListView lv = (ListView) findViewById(R.id.list_kat);
                lv.setItemChecked(position, true);
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
03.08.2013, 19:29     ListView: подсветка выбранного элемента #6
вот и разобрались.
PeterBox
0 / 0 / 0
Регистрация: 08.02.2013
Сообщений: 8
03.08.2013, 19:34  [ТС]     ListView: подсветка выбранного элемента #7
да, но не работает Изначально код и был таким. В логе вижу, что после клика - getCheckedItemPosition() изменился, но но цвет айтема не меняется...
это работает:
XML
1
<item android:drawable="@color/greenColor" android:state_pressed="true"/>
это не работает:
XML
1
<item android:drawable="@color/redColor" android:state_checked="true"/>
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.08.2013, 19:06     ListView: подсветка выбранного элемента
Еще ссылки по теме:

Переход с элемента listView на activity - Программирование Android
никак не возьму в толк, каким образом можно реализовать переход на новое activity с элемента listView, чтобы при нажатии на 1 строку...

Зафиксировать пзицию элемента в ListView - Программирование Android
Коллеги, нужен совет. Ситуация такая - Есть один ListView, элементом списка является WebView. Так вот, после иницализации адаптера нужно...

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

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

ListView ячейки, получить Id элемента из SQLite - Программирование Android
есть база данных SQLITE. некоторые элементы БД выводятся в ListView через адаптер и вспомогательный XML. моя задача - в onItemClick перейти...


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

Или воспользуйтесь поиском по форуму:
PeterBox
0 / 0 / 0
Регистрация: 08.02.2013
Сообщений: 8
05.08.2013, 19:06  [ТС]     ListView: подсветка выбранного элемента #8
Пришлось переопределить адаптер и в нем getView. Только так заработало выделение.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@Override
        public View getView(int position, View convertView, ViewGroup parent){
            View row = super.getView(position, convertView, parent);
            if (row == null) {
                LayoutInflater mInflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                row = mInflater.inflate(R.layout.list_kat, parent, false);
                }
            
            final ListView lv = (ListView) parent;
            if(position == lv.getCheckedItemPosition()){
                                // цвет выбранного элемента
                    row.setBackgroundColor(0xFF0000FF);
                } else {
                                // старая разметка, где работает только state_pressed
                    row.setBackgroundResource(R.drawable.list_kat_background);
                }
           return row;
        }
Добавлено через 4 часа 47 минут
опять непонятки
этот код работает:
Java
1
2
// цвет выбранного элемента
                    row.setBackgroundColor(0xFF0000FF);
а это нет:
Java
1
2
// цвет выбранного элемента
                    row.setBackgroundColor(R.color.whiteColor);
И ошибок нет в логе.
Yandex
Объявления
05.08.2013, 19:06     ListView: подсветка выбранного элемента
Ответ Создать тему
Опции темы

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