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

Posted

技术标签:

【中文标题】为啥导航抽屉中 ListView 项目的 OnClickListener 永远不会触发?【英文标题】:Why OnClickListener of ListView items in Navigation Drawer never fires?为什么导航抽屉中 ListView 项目的 OnClickListener 永远不会触发? 【发布时间】:2015-11-07 20:37:12 【问题描述】:

我正在使用 Navigation Drawer 创建一个 android 应用。

我遇到了OnItemClickListener 的问题,不知怎的,它根本无法启动。

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

我按照 Android 开发者页面的建议设置了 OnItemClickListener,但运气不佳。

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】:

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

【讨论】:

以上是关于为啥导航抽屉中 ListView 项目的 OnClickListener 永远不会触发?的主要内容,如果未能解决你的问题,请参考以下文章

带有导航抽屉的片段中的 ListView 和 ViewPager

处理自定义列表项单击导航抽屉 ListView 内

Listview 项目未在 Fragment Android 中显示

如何将listview项目链接到android中的不同活动?

在导航抽屉项目单击时,导航抽屉中的新列表视图

如何获取导航抽屉中的项目以更改视图