2013-02-27 2 views
0

Я использую ListFrament, и хочу выделить выделенные строки.ListFragment: выделить выделенную строку

Мой селектор:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item 
    android:state_pressed="true" 
    android:drawable="@color/gold" /> 
    <item 
    android:state_selected="true" 
    android:drawable="@color/plum" /> 
    <item 
    android:drawable="@color/medium_green" /> 
</selector> 

Код в моем ListFragment: в onCreateActivity:

this.getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE); 

по щелчку:

@Override 
public void onListItemClick(ListView list, View v, int position, long id) { 
    super.onListItemClick(list, v, position, id); 
    String tag = this.getTag(); 
    Log.d(TAG, "id, position " + id + " " + position); 
    list.setSelection(position); 
} 

, к сожалению, это не работает - это только мигает «золото», при нажатии строки ... Я хочу, чтобы выбранная строка оставалась подсвеченной ...

Заранее спасибо за ваши ответы,

+0

Вам нужно будет сделать это через адаптер. Адаптер отвечает за визуализацию элементов списка. – Tool

ответ

2

Попробуйте

установить глобальную переменную вашего типа строки. Я принимаю вид, как это родовое

View previous; 

вид инициализации в onCreateView

previous=new View(getContext); 

И когда onListItemClick нравится этот

public void onListItemClick(ListView list, View v, int position, long id) { 
    super.onListItemClick(list, v, position, id); 
    String tag = this.getTag(); 
    Log.d(TAG, "id, position " + id + " " + position); 
    previous.setSelected(false); 
    v.setSeleted(true); 
    previous=v; 
} 

Попробуйте это и получить обратно я использовал этот в моих старых приложениях ... Я обязательно буду работать. Надеюсь, это поможет вам.

+0

спасибо за ваш ответ - к сожалению, это не сработало для меня - на основе вашей идеи, которую я пробовал: \t \t previous.setSelected (false); \t \t previous.setBackgroundColor (Color.TRANSPARENT); \t \t \t \t v.setSelected (true); \t \t v.setBackgroundColor (R.color.plum); \t \t previous = v; - он выглядит не очень хорошо, но он работает – user1800825

+0

Приятно знать, что это помогает вам ... Измените свой код выбора ... удалить android: state_pressed = "true" item ... он будет работать ... Вы можете отметить это как ответ если это поможет вам ... – Pragnani

Смежные вопросы