Страница 1 из 2

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

Добавлено: 10 мар 2013, 19:07
Miroslav
Здравствуйте!

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

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

Добавлено: 10 мар 2013, 20:16
rezak90
урок 43 не?

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

Добавлено: 10 мар 2013, 20:34
Foenix
делала такое))
Потом почти сразу отказалась от этой хрени, т.к. выглядит не по андроидному, разработчики на девелопере настоятельно пишут что так делать не стоит, просто нужно найти способ как это обойти, так что пришлось покумекать, но было интересно))

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

Добавлено: 10 мар 2013, 20:37
rezak90
я честно 43-й урок не смотрел, но как я делал: селектор на айтем и в нём есть состояние activated, при нажатии делаем setActivated(true) и всё

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

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

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

Добавлено: 11 мар 2013, 11:55
Miroslav
Ура, получилось!

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

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.

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

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

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

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

Добавлено: 12 мар 2013, 14:34
Foenix
:)))) этого и следовало ожидать
Вы уверены, что вам это нужно?

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

Добавлено: 12 мар 2013, 14:45
Miroslav
Кому смешно, а кому и полсмеха нет, Оливка... =(

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

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

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

Добавлено: 12 мар 2013, 14:54
rezak90
я уже описал как делал я, если у Вас не получилось значит что то не правильно сделали

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

Добавлено: 12 мар 2013, 16:47
Foenix
Кинула ЛС ;)

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

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

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

Добавлено: 13 мар 2013, 10:13
rezak90
это вы извините, но у меня на шести планшетах всё работает

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

Добавлено: 25 мар 2013, 19:36
Serious
Здравстуйте.

Пытаюсь сделать множественный выбор элементов списка, как в уроке 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), но это не помогло.

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

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

Добавлено: 25 мар 2013, 22:46
rezak90
Вы не правильно ставите вопрос, нужно так:
"Мне нужно решить такой вопрос..."
"Я сделал вот так... (код)"
"У меня чего то не получается, почему? ... "
Так Вас все поймут, а то что вы что то поменяли что мой зоркий орлиный глаз даже не позволяет определить то это только Вы поняли, учитись правильно формулировать вопрос и так Вам быстрей ответят.

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

Добавлено: 26 мар 2013, 07:42
Serious
Мне нужно решить вопрос с множественным выбором в 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);
	        	
			}
		});
Но выделение почему то визуально нет. После отпускания развыделяется.

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

Добавлено: 26 мар 2013, 08:16
rezak90
в обработчике onItemClick добавьте

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

lvServer.setItemChecked(arg2, true);

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

Добавлено: 26 мар 2013, 08:45
Serious
rezak90 писал(а):в обработчике onItemClick добавьте

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

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

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

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

Добавлено: 26 мар 2013, 08:57
rezak90
бросайте параметры листа, посмотрим какие атрибуты в лейауте

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

Добавлено: 26 мар 2013, 09:02
Serious

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

<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>
Я вас правильно понял, вы это просили выложить ?