ListView с подсветкой выбранного пункта

Интерфейс, диалоги, темы, стили, меню
Miroslav
Сообщения: 9
Зарегистрирован: 10 мар 2013, 17:40

ListView с подсветкой выбранного пункта

Сообщение Miroslav » 10 мар 2013, 19:07

Здравствуйте!

Не скажете, пожалуйста, как наиболее просто можно сделать список типа android.R.layout.simple_list_item, только чтобы выделение, пусть даже рыжее, после нажатия сохранялось? Буду очень благодарен за любые соображения на этот счет.

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: ListView с подсветкой выбранного пункта

Сообщение rezak90 » 10 мар 2013, 20:16

урок 43 не?
R.id.team
Политика на форуме запрещена

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: ListView с подсветкой выбранного пункта

Сообщение Foenix » 10 мар 2013, 20:34

делала такое))
Потом почти сразу отказалась от этой хрени, т.к. выглядит не по андроидному, разработчики на девелопере настоятельно пишут что так делать не стоит, просто нужно найти способ как это обойти, так что пришлось покумекать, но было интересно))
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: ListView с подсветкой выбранного пункта

Сообщение rezak90 » 10 мар 2013, 20:37

я честно 43-й урок не смотрел, но как я делал: селектор на айтем и в нём есть состояние activated, при нажатии делаем setActivated(true) и всё
R.id.team
Политика на форуме запрещена

Miroslav
Сообщения: 9
Зарегистрирован: 10 мар 2013, 17:40

Re: ListView с подсветкой выбранного пункта

Сообщение Miroslav » 11 мар 2013, 09:00

Отличный форум! Спасибо огромное всем за ответы.
В уроке 43 не то - там с радиобуттонами. Буду смотреть селекторы.
Olivka, не ругайтесь. =)

Miroslav
Сообщения: 9
Зарегистрирован: 10 мар 2013, 17:40

Re: ListView с подсветкой выбранного пункта

Сообщение Miroslav » 11 мар 2013, 11:55

Ура, получилось!

Может, кому пригодится:

1) создаем xml для селектора:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_activated="false" android:drawable="@drawable/image" />
</selector>

2) у ListView прописываем android:listSelector="@layout/selector"

Единственная оговорка, что это работает только от API 11.

Miroslav
Сообщения: 9
Зарегистрирован: 10 мар 2013, 17:40

Re: ListView с подсветкой выбранного пункта

Сообщение Miroslav » 12 мар 2013, 14:27

Рано порадовался... =(
То, что я описал, на реальном планшете почему-то не работает. Выделение сохраняется, только если нажатие отвести за предел списка.

Народ, поделитесь соображениями! Как сделать сохраняющуюся подсветку выбранного пункта? Вещь, небось, элементарная...

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: ListView с подсветкой выбранного пункта

Сообщение Foenix » 12 мар 2013, 14:34

:)))) этого и следовало ожидать
Вы уверены, что вам это нужно?
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Miroslav
Сообщения: 9
Зарегистрирован: 10 мар 2013, 17:40

Re: ListView с подсветкой выбранного пункта

Сообщение Miroslav » 12 мар 2013, 14:45

Кому смешно, а кому и полсмеха нет, Оливка... =(

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

А у Вас получилось так сделать в свое время?

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: ListView с подсветкой выбранного пункта

Сообщение rezak90 » 12 мар 2013, 14:54

я уже описал как делал я, если у Вас не получилось значит что то не правильно сделали
R.id.team
Политика на форуме запрещена

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: ListView с подсветкой выбранного пункта

Сообщение Foenix » 12 мар 2013, 16:47

Кинула ЛС ;)
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Miroslav
Сообщения: 9
Зарегистрирован: 10 мар 2013, 17:40

Re: ListView с подсветкой выбранного пункта

Сообщение Miroslav » 13 мар 2013, 08:51

Пан Р'езак, Ваше решение, спасибо Вам за него, работает на эмуляторе (причем и без setActivated(true) в onClick'е), а когда я проверил на реальном планшете, оказалось, к ожалению, что выделение пропадает после отпускания, если только нажатие не выведено за границы списка. setActivated(true) не помогает.
Очень странно, но так. Может быть, планшет глюченный, не знаю. Не должно же быть отличий на эмуляторе и планшете...

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: ListView с подсветкой выбранного пункта

Сообщение rezak90 » 13 мар 2013, 10:13

это вы извините, но у меня на шести планшетах всё работает
R.id.team
Политика на форуме запрещена

Serious
Сообщения: 22
Зарегистрирован: 18 мар 2013, 13:45

Re: ListView с подсветкой выбранного пункта

Сообщение Serious » 25 мар 2013, 19:36

Здравстуйте.

Пытаюсь сделать множественный выбор элементов списка, как в уроке 113. с ActionMode
Но почему то если вместо стандартного ресурса, для элемента списка, указать свой xml файл.
То в режиме множественного выбора, не происходит выделения строк.
Точнее сказать, после отпускания они развыделяются.

Хотя в логах видно что выделение происходит

D/myLogs(595): position = 4, checked = true
D/myLogs(595): position = 5, checked = true
D/myLogs(595): position = 5, checked = false
D/myLogs(595): position = 3, checked = true

Попробовал как написано выше в OnItemClick добавить SetActivated(true), но это не помогло.

Заранее спасибо.

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: ListView с подсветкой выбранного пункта

Сообщение rezak90 » 25 мар 2013, 22:46

Вы не правильно ставите вопрос, нужно так:
"Мне нужно решить такой вопрос..."
"Я сделал вот так... (код)"
"У меня чего то не получается, почему? ... "
Так Вас все поймут, а то что вы что то поменяли что мой зоркий орлиный глаз даже не позволяет определить то это только Вы поняли, учитись правильно формулировать вопрос и так Вам быстрей ответят.
R.id.team
Политика на форуме запрещена

Serious
Сообщения: 22
Зарегистрирован: 18 мар 2013, 13:45

Re: ListView с подсветкой выбранного пункта

Сообщение Serious » 26 мар 2013, 07:42

Мне нужно решить вопрос с множественным выбором в ListView. вот как я делаю:

Код: Выделить всё

	    SimpleAdapter sAdapter = new SimpleAdapter(this, data, R.layout.servers_cell,
	        from, to);
	   
	    lvServer = (ListView) findViewById(R.id.lvServers);
	    lvServer.setAdapter(sAdapter);
	    lvServer.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
	    
	    lvServer.setMultiChoiceModeListener(new MultiChoiceModeListener() {

	      public boolean onCreateActionMode(ActionMode mode, Menu menu) {
	        mode.getMenuInflater().inflate(R.menu.context, menu);
	        return true;
	      }

	      public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
	        return false;
	      }

	      public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
	    	  Log.d(LOG_TAG, "finish----------- ");
	        mode.finish();
	        return false;
	      }

	      public void onDestroyActionMode(ActionMode mode) {
	      }
	      
	      public void onItemCheckedStateChanged(ActionMode mode,
	          int position, long id, boolean checked) {
	        Log.d(LOG_TAG, "position = " + position + ", checked = "
	            + checked);
	      }
	    });

Код: Выделить всё

	    lvServer.setOnItemClickListener(new OnItemClickListener() {

			@Override
			public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
					long arg3) {
	        	lvServer.setActivated(true);
	        	
			}
		});
Но выделение почему то визуально нет. После отпускания развыделяется.

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: ListView с подсветкой выбранного пункта

Сообщение rezak90 » 26 мар 2013, 08:16

в обработчике onItemClick добавьте

Код: Выделить всё

lvServer.setItemChecked(arg2, true);
R.id.team
Политика на форуме запрещена

Serious
Сообщения: 22
Зарегистрирован: 18 мар 2013, 13:45

Re: ListView с подсветкой выбранного пункта

Сообщение Serious » 26 мар 2013, 08:45

rezak90 писал(а):в обработчике onItemClick добавьте

Код: Выделить всё

lvServer.setItemChecked(arg2, true);
Добавил, теперь ActionMode появляется при обычном нажатии на элемент списка, а раньше появлялся только при долгом нажатии.
С выделением ничего не изменилось, все также развыделяется.

И еще момент, в режим множественного выбора(когда появился ActionMode), обработчик onItemClick , не вызывается вовсе.

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: ListView с подсветкой выбранного пункта

Сообщение rezak90 » 26 мар 2013, 08:57

бросайте параметры листа, посмотрим какие атрибуты в лейауте
R.id.team
Политика на форуме запрещена

Serious
Сообщения: 22
Зарегистрирован: 18 мар 2013, 13:45

Re: ListView с подсветкой выбранного пункта

Сообщение Serious » 26 мар 2013, 09:02

Код: Выделить всё

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/LinearLayout2"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"
    android:orientation="vertical"
    tools:context=".MainActivity" >

    <ListView
        android:id="@+id/lvServers"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >
    </ListView>
</LinearLayout>
Я вас правильно понял, вы это просили выложить ?

Ответить