2013-12-05 3 views
0

У меня есть класс ListViewFragment, который настроен на choice_mode_single. Я использую пользовательский CursorAdapter для заполнения listView. Проблема в том, что когда я выбираю что-то из LV, он не выделяется синим фоном. но только текст выделяется жирным шрифтом. Код:Элемент ListView не выбран

public class CategoryFragment extends ListFragment{ 

int lastPosition; 
DatabaseControl db; 
OnCategorySelectedListener callBack; 
CategoryCursorAdapter cursorInstance; 
public interface OnCategorySelectedListener{ 

    public void onCategorySelected(int categoryName); 
} 
@Override 
public void onActivityCreated(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    db=new DatabaseControl(this.getActivity()); 
    db.open(); 
    getListView().setFastScrollEnabled(true); 
    cursorInstance=new CategoryCursorAdapter(getActivity(), db.getCategoryCursor(""), CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER, "category_name",0, db); 
    getListView().setAdapter(cursorInstance); 

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

    this.getListView().setOnItemLongClickListener(listViewLongClick); 
    if(savedInstanceState!=null) 
     getListView().setItemChecked(savedInstanceState.getInt("position"), true); 

} 




@Override 
public void onAttach(Activity activity) { 
    // TODO Auto-generated method stub 
    super.onAttach(activity); 
    try{ 
     callBack=(OnCategorySelectedListener) activity; 
    } 

    catch(ClassCastException e){ 

     throw new ClassCastException(activity.toString()+" must implement OnCategorySelectedListener"); 
    } 
} 


@Override 
public void onSaveInstanceState(Bundle outState) { 
    // TODO Auto-generated method stub 
    super.onSaveInstanceState(outState); 
    outState.putInt("position", lastPosition); 

} 
+0

есть вы создали селектор списка? –

+0

Нет. Как это трюки? пожалуйста, дайте мне пример –

ответ

0

Выполните следующие действия, чтобы создать селектор ListView,

  • Прежде всего, вы должны создать селектор в вытяжке папку для ListView строки, как,

list_selector.xml

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@android:color/white" android:state_activated="true"/> 
    <item android:drawable="@android:color/black"/> 
</selector> 
  • Затем примените list_selector.xml к родительскому представлению строки ListView в качестве фона.

  • Затем установите ListView в ListView.CHOICE_MODE_SINGLE с помощью mListView.setChoiceMode(ListView.CHOICE_MODE_SINGLE)

Итак, ваш окончательный код вещи будет что-то вроде,

mListView = (ListView) findViewById(R.id.listView); 
    mListView.setChoiceMode(ListView.CHOICE_MODE_SINGLE); 
    MyAdapter mAdapter = new MyAdapter(); 
    mListView.setAdapter(mAdapter); 
    mListView.setSelection(0);   // setting 0th position selected by default 
    mListView.setItemChecked(0, true); 

Вы также можете проверить мои demo example from github

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