0

我有一个显示 ListView 的活动屏幕。此 ListView 允许用户根据自己的喜好选择项目。我对此没有任何问题。

但是,屏幕也有一个导航抽屉。那是另一个ListView。我已手动设置要选择/检查的项目之一。但是,当导航抽屉打开时,该 ListView 中没有任何视觉效果。如果我以编程方式查询它,我会被告知检查了一项,并且它的位置是我所期望的。

难道我做错了什么?

我的屏幕 xml 如下所示:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/NavigationDrawerLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <ListView
        android:id="@+id/folderList"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:choiceMode="singleChoice"
        android:listSelector="@android:color/darker_gray" />
    <LinearLayout
        android:id="@+id/drawerView"
        android:orientation="vertical"
        android:layout_width="240dp"
        android:layout_height="match_parent"
        android:layout_gravity="start">
        <ListView
            android:id="@+id/listNavFolders"
            android:layout_width="match_parent"
            android:layout_height="fill_parent"
            android:listSelector="@android:color/holo_red_light"
            android:choiceMode="singleChoice"
            android:divider="@android:color/transparent"
            android:dividerHeight="0dp"
            android:background="#111" />
    </LinearLayout>
</android.support.v4.widget.DrawerLayout>

我使用此代码设置选择。它是 C#,因为我使用的是 Xamarin,但我认为这不会产生影响。

this.drawerList.SetSelection(pos);
this.drawerList.SetItemChecked(pos, true);

调用CheckedItemCountCheckedItemPosition两者都表示已设置值。我有理由确定我的 ListView 设置正确,因为屏幕上还有另一个 ListView 可以正常工作。

有人对我缺少什么有建议吗?

4

1 回答 1

0

您缺少抽屉列表中的项目必须实现 ICheckable 接口才能使 SetItemChecked(pos, true) 工作。

如果您使用 Xamarin + MvvmCross,我建议您使用这种方法。

对于 android 风格的 DrawerLayout 工作,只需将此答案调整为 csharp。

于 2014-01-07T05:39:03.983 回答