我有一个显示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);
对CheckedItemCount
或CheckedItemPosition
的调用均表示已设置值。我有理由确定我已经正确设置了ListView,因为屏幕上有另一个ListView可以正常工作。
有没有人建议我缺少什么?
答案 0 :(得分:0)
您错过了drawerList中的项目必须实现SetItemChecked(pos,true)的ICheckable接口才能工作。
如果您使用Xamarin + MvvmCross,我建议您使用this aproach。
对于android风格的DrawerLayout工作,只需将this answer改为csharp。