默认情况下,在ListFragment中选择一个项目

时间:2014-12-05 10:03:35

标签: android

我的代码存在问题。我想默认选择ListFragment中的第一个元素(当Activity第一次可见时,我想要选择第一个元素)但我无法做到这一点。这是我的代码:

在ListFragment(onActivityCreated)中:

ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(),
                R.layout.fragment_selector, ActivityMain2.mTitleArray);
setListAdapter(adapter);
ListView listView = getListView();
listView.setSelector(R.drawable.fragment_listselector);      
listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
listView.setItemChecked(1, true);
listView.setSelection(1);
listView.setSelected(true);
adapter.notifyDataSetChanged();

布局/ fragment_selector:

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:padding="5dp"
  android:textSize="32sp" >

</TextView>

抽拉/ fragment_listselector:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

  <item android:drawable="@color/default_color" android:state_selected="false"/>
  <item android:drawable="@color/pressed_color" android:state_selected="true"/>

</selector>

有任何帮助吗?谢谢

1 个答案:

答案 0 :(得分:1)

因此,您的问题与this Question

重复

ListView不会保留选定的项目,因此自定义选择器不起作用! 您必须编写自己的适配器并记住带有字段的所选项目,如答案所示。

然后只需拨打listView.setSelection(0)中的onCreate,即可。

我自己使用了那里的代码并且工作正常。