0
我在导航抽屉中使用简单的ListView
,在布局XML中设置了android:choiceMode="singleChoice"
。这让我使用的文本颜色选择:禁止选择某些ListView项目,但仍然获得点击事件?
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_activated="true" android:color="@color/primary_500" />
<item android:color="@color/text_primary" />
</selector>
这将色彩与primary_500
所选择的项目,并与text_primary
休息。
以上工作正常,但其中一个项目将推出,而不是加载一个片段一个新的活动,所以它不应该做出选择项目的ListView
的。
我试过这个恢复它:
public void selectItem(int index) { selected_item = index; }
public void revertSelectedItem() {
int y = navigation.getScrollY();
list.setSelection(selected_item);
list.scrollTo(0, y);
}
和其他地方:
@Override
public void onItemClick(ListView list, View view, int index, long id) {
switch((int)id) {
case R.id.exampleItem_forFragment:
/* Swap fragments */
selectItem(index);
break;
case R.id.exampleItem_forActivity:
/* Launch activity */
revertSelectedItem();
break;
}
}
但是,即使revertSelectedItem()
被调用时,选择没有改变。我假定在onItemClick()
返回后才会分配新的选择,所以我的更改被覆盖。
有没有干净的方法来禁用或恢复选择只能更改某些项目,但仍收到的点击事件?