我的OnActivityCreated:
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(),
android.R.layout.simple_list_item_1, values);
setListAdapter(adapter);
和onListItemClick:
public void onListItemClick(ListView l, View v, int position, long id) {
String item = (String) getListAdapter().getItem(position);
DetailFragment fragment = (DetailFragment) getFragmentManager()
.findFragmentById(R.id.detailFragment);
if (fragment != null && fragment.isInLayout()) {
v.setBackgroundColor(getResources().getColor(R.color.darkcherry));
fragment.setText(item);
}
通过执行此操作,所选项目将获得彩色背景,但随后选择另一项目,之前的选择不会消失。在我之前的问题中,提供的解决方案使用xml,但我还没有为listview定义xml,只定义了片段。 如何为选择(背景)着色?
链接到上一个问题:How to set color of selected item in ListFragment in android?
答案 0 :(得分:1)
在support4库中的ListFragment示例中,他们通过 list row layout as checkable
来实现此类功能。
答案 1 :(得分:0)
使用selector
作为自定义行的背景:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true" android:drawable="@color/selected_row" />
<item android:drawable="@drawable/normal_drawable" />
</selector>
当您点击列表中的元素时,请将您单击的行的状态设置为选中:
public void onListItemClick(ListView l, View v, int position, long id) {
v.setSelected(true);
String item = (String) getListAdapter().getItem(position);
DetailFragment fragment = (DetailFragment) getFragmentManager()
.findFragmentById(R.id.detailFragment);
if (fragment != null && fragment.isInLayout()) {
v.setBackgroundColor(getResources().getColor(R.color.darkcherry));
fragment.setText(item);
}
答案 2 :(得分:0)
您需要跟踪所选视图,以便在选择新视图时更改其颜色。
此外,保留此变量将允许您在旋转屏幕时跟踪选择(保存并恢复片段的状态)。
或者,如果您使用列表视图的selector属性,则可以将其设置为单选模式:
getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);
创建片段。显然,你必须删除onListItemClick。
答案 3 :(得分:0)
尝试使用custom adapter,并在list item的布局中,将selector设置为背景可绘制。