我给自己定的OnItemSelectedListener
在我的自定义ExpandableListView
:ExpandableListView不叫OnItemSelectedListener
setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
Log.debug(TAG, "item selected");
// do stuff
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
Log.debug(TAG, "nothing selected");
// do stuff
}
});
此侦听器永远不会被调用,无论从触摸的项目或调用setSelected(int)
或setSelectedGroup(int)
。
还有其他Q &回到2010年约OnItemSelectedListener
不与ListView
合作。我无法找到真正解释如何使其工作的解释。常见的答案是使用点击监听器。我想避免,如果可能的话,因为我需要的是选择什么时候知道的(即列表是空的),我想利用OnItemSelectedListener#onItemSelected(...)
这个特点:
此回调时才被调用新选择的位置与先前选择的位置不同或者没有选定的项目。
我可以通过其他方式实现这两种方式,但如果OnItemSelectedListener
有效,它会更好。
编辑:看起来ExpandableListView
是完全破坏的项目选择。当点击监听器调用,这个片段记录所选择的项目为-1:
setSelection(0);
setSelectedGroup(0);
Log.debug(TAG, "selected item: " + getSelectedItemPosition());
我从来没有使用'OnItemSelectedListener'但它听起来像你想来自设定AbsListView'的'的ChoiceMode行为。虽然这对'ListViews'起作用,但对'ExpandableListViews'不起作用。 –
https://github.com/JaySoyer/Advanced-Adapters提供了一个使用ChoiceMode和ExpandableListviews的解决方案。 –