【问题标题】:Select an item in a ListFragment by default默认选择 ListFragment 中的项目
【发布时间】:2015-02-03 11:18:39
【问题描述】:

我的代码有问题。我想默认选择 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();

布局/片段选择器:

<?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>

drawable/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>

有什么帮助吗?谢谢

【问题讨论】:

标签: android


【解决方案1】:

所以您的问题与this Question 重复

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

然后只需在onCreate 中调用listView.setSelection(0) 即可。

我自己使用了那里的代码,效果很好。

【讨论】:

  • 但是当你第一次打开Activity的时候,有没有被选中的项目?
  • 不,您可以实现您的适配器,它将您的第一个项目显示为选中;或者直接拨打listView.setSelection(0)
  • 我编辑了我的适配器以突出显示第一个项目:if (selectedIndex != -1 &amp;&amp; position == selectedIndex || (selectedIndex == -1 &amp;&amp; position == 0)) 欢迎您。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多