有没有人知道为什么setItemChecked()函数不能用于我的下面的例子:
private class DrawerItemClickListener implements
ListView.OnItemClickListener {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
int pos = position;
...
default:
break;
}
listView.setItemChecked(pos, true);
setTitle(titles[pos]);
drawerLayout.closeDrawer(listviewLayout);
}
}
在我到目前为止看到的所有示例中,setItemChecked都是在DrawerItemClickListener方法中完成的。但由于某种原因,它不想工作。我试过把它放在onCreate()或onResume()中,但仍然没有结果。
我测试了简单的listView,它似乎也不起作用。有什么建议吗?
我的适配器代码:
public View getView(int position, View convertView, ViewGroup parent) {
Account account = this.items.get(position);
ViewHolder viewHolder;
if (convertView == null) {
viewHolder = new ViewHolder();
LayoutInflater inflater = LayoutInflater.from(getContext());
convertView = inflater.inflate(layoutResID, parent, false);
viewHolder.textViewTitle = (TextView) convertView
.findViewById(R.id.textViewTitle);
viewHolder.imageViewImage = (ImageView) convertView
.findViewById(R.id.imageView);
convertView.setTag(viewHolder);
} else
viewHolder = (ViewHolder) convertView.getTag();
return convertView;
}
答案 0 :(得分:0)
你拨打setItemChecked()
的地方几乎无关紧要。您使用的是自定义ListView
观看次数吗?
如果您的答案是肯定的,则必须为ListView
项指定选择器。
这可能是您抽屉的ListView
项目:
<TextView
android:id="@+id/drawer_item_text_view"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/drawer_list_item_background"/>
您的项目背景(R.drawable.drawer_list_item_background
)必须指定为选择器:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/bg_menu_active" android:state_checked="true"/>
<item android:drawable="@drawable/bg_menu_active" android:state_selected="true"/>
<item android:drawable="@drawable/bg_menu_active" android:state_activated="true"/>
<item android:drawable="@drawable/bg_menu_normal" android:state_checked="false"/>
</selector>
R.drawable.bg_menu_active
:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<stroke android:width="1dp" android:color="@color/white"/>
</shape>
R.drawable.bg_menu_normal
:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<solid android:color="@android:color/black"/>
</shape>
完成此操作后,您可以将所选项目设置为已选中并以某种方式突出显示它。