我有ListView
一个PopupWindow
。PopupWindow
是这样初始化的
window.setContentView(root);
window.setTouchable(true);
window.setFocusable(true);
window.setOutsideTouchable(true);
window.setWidth(WindowManager.LayoutParams.WRAP_CONTENT);
window.setHeight(WindowManager.LayoutParams.WRAP_CONTENT);
然后ListView
:
fileList = (ListView) root.findViewById(R.id.explorer_list);
fileList.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
fileList.setSelector(android.R.drawable.screen_background_light_transparent);
fileList.setOnItemClickListener(this);
[...]
@Override
public void onItemClick(AdapterView<?> adapter, View v, int pos, long id) {
selected = (File) fileList.getItemAtPosition(pos);
}
像这样,一切正常,除了选择器在滚动之前不会显示在选择ListView
中(在滚动列表之前,没有任何东西在视觉上显示为选中,尽管项目被正确选择)。
如果我设置了PopupWindow
不可聚焦,那么视觉选择可以正常工作(单击时会在视觉上正确选择该项目)但onItemClick()
永远不会被调用,因此我无法获得所选项目。
ListView.getSelectedItem()
在这两种情况下总是返回null
,即使有一个选定的项目。
关于如何解决这种情况的任何想法?提前致谢。