突出显示ListFragment(MultiChoiceModeListener)中的所选项目?

时间:2012-10-01 19:04:03

标签: java android xml

我希望能够看到我的列表中已选择的项目。在将ListView转换为ListFragment之前,所选项目的颜色为蓝色(Holo Dark),但现在我只能在按下项目时看到蓝色 - 然后它会消失。我对“检查”项目没有问题,因为它们是。你只是看不到它。

以下是我在onActivityCreated()中所做的事情:

getListView().setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
getListView().setItemsCanFocus(false);
getListView().setMultiChoiceModeListener(new LongPress());

LongPress()是一个实现ListView.MultiChoiceModeListener的私有类。当手指放在项目上时,它会打开一个上下文操作栏。然后,用户可以选择更多项目,这就是问题发生的地方。您无法查看哪些项目已被选中(我希望它们被突出显示)。在扩展ListFragment之前为什么会这样做?我试图在我的.xml文件中创建一个自定义选择器,这似乎也不起作用。我更喜欢使用自定义的,如果有的话。

这是我ListFragment课程中的另一种方法:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    return inflater.inflate(R.layout.fragment_listview, container, false);
}
除了更改背景颜色和分隔符的颜色之外,

fragment_listview.xml没有做任何特殊的事情。

我该怎么办?

我尝试了这个,但它不起作用:

在我的list_item.xml中:

android:background="@drawable/selector"

selector.xml:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true"
      android:drawable="@drawable/item_checked" />
</selector>

item_checked.xml

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

<solid android:color="#000000" />

</shape>

2 个答案:

答案 0 :(得分:1)

我遇到了完全相同的问题。

我在这篇文章中找到了一个解决方案:Highlight custom listview item when long click

诀窍:

  

在列表行的布局文件中设置(在顶级组件中,通常是LinearLayout或RelativeLayout):

     

机器人:背景=&#34;机器人:?ATTR / activatedBackgroundIndicator&#34;

答案 1 :(得分:0)

我现在无法找到详细信息,但您必须为listview-items提供statelist drawable,为checked州提供单独的drawable。