【发布时间】: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;
}
哪一部分出了问题,或者我需要完全不同的做法?
【问题讨论】:
标签: android android-listview adapter onitemclicklistener