导航抽屉setItemChecked()不做任何事情

时间:2015-02-12 14:54:52

标签: android position navigation-drawer

有没有人知道为什么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;
}

1 个答案:

答案 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>

完成此操作后,您可以将所选项目设置为已选中并以某种方式突出显示它。