为什么导航抽屉中的ListView项目的OnClickListener永远不会触发?

时间:2015-08-14 14:34:18

标签: android android-listview adapter onitemclicklistener

我正在使用导航抽屉创建一个Android应用。

我遇到OnItemClickListener的问题,根本无法解决它。

所有项目都正确到达ListView,但从不触发任何操作。

我设置OnItemClickListener为Android Developer页面建议,没有任何运气。

MainActivity.java

Private ListView listView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    listView = (ListView)activity.findViewById(R.id.navigationList);
    setItems(listView);
}

private void setItems(ListView listView) {
    for (int i = 0; i < titles.length; i++) {
        boolean bSelected = false;
        if(i==selected) {
            bSelected = true;
        }
        adapter = new DrawerAdapter(context, generateData(items, i, titles[i], subtitles[i], subTexts[i], icons[i], bottomDivider[i], bSelected), layout);
        listView.setAdapter(adapter);
    }

    listView.setOnItemClickListener(new DrawerItemClickListener());


    listView.invalidate();
    listView.deferNotifyDataSetChanged();
}



private class DrawerItemClickListener implements ListView.OnItemClickListener {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        // THIS NEVER FIRES!!!
        Toast.makeText(context, "Working", Toast.LENGTH_LONG).show();
    }
}

我在应用程序的其他部分使用几乎相同的代码来显示消息等,OnItemClickListener在其他地方正常工作。

private ArrayList<DrawerRow> generateData(ArrayList<DrawerRow> items, int id, String title, String subtitle, String subText, int icon, boolean bottomDivider, boolean bSelected) {
    items.add(new DrawerRow(id, title, subtitle, subText, icon, bottomDivider, bSelected));
    return items;
}

哪个部分出错了,或者我需要完全不同的做法?

1 个答案:

答案 0 :(得分:0)

尝试在android:focusable="false"的XML和抽屉项目布局的根元素上添加ListView