gpt4 book ai didi

android - 滚动 ListView 后 onChildClick 事件停止

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:32:39 26 4
gpt4 key购买 nike

我有一个应用程序使用 ExpandableListView 小部件,其中通过 BaseExpandableListAdapter 填充了项目。该应用程序是为 Android 1.6 版构建的,当我使用 Android Emulator(1.6 版构建)对其进行测试时,一切正常。我可以上下滚动列表,当我点击列表中的任何项目时,我会收到一个 onChildClick() 事件。

但是,当我尝试在真实的 Android 手机(运行 Gingerbread)上运行同一个应用程序时,如果我不滚动 ExpandableListView,我只会收到 onChildClick() 事件。如果我过度滚动列表,我将不再获得 onChildClick 事件(也不再获得 itemClickEvents)。

所以我很困惑。为什么我在滚动 ListView 项目后没有得到任何 onChild 或 onItem 单击事件?请注意,如果我滚动它只是少量(例如,2 或 3 行),我确实会收到点击事件,但如果再滚动,我将不再收到列表中任何项目的点击事件。

如有任何建议或建议,我们将不胜感激。

谢谢。

最佳答案

好的,我在这里为可能有同样问题的其他人回答我自己的问题。我遇到的问题似乎与 ExpandableListView 小部件的焦点状态有关。当我滚动列表时,ListView 小部件似乎失去了焦点,我无法选择任何列出的项目。我不确定纠正此问题的最佳方法是什么,但我确实让它起作用了。

我为 ListView 小部件添加了一个滚动监听器,如下所示:

getExpandableListView().setOnScrollListener(this);

然后我向我的 Activity 添加了一个方法,在它完成滚动后将焦点设置回 ListView 小部件:

@Override
public void onScrollStateChanged(AbsListView view, int scrollState)
{
// - this method is called when there is a scroll event in the main ExpandableListView widget.

// - after the user stops scrolling the listview, make sure to set the focus to the widget

if ( scrollState == OnScrollListener.SCROLL_STATE_IDLE )
{
ExpandableListView elv = getExpandableListView();
elv.requestFocusFromTouch();
}
}

现在这似乎解决了我的问题。我确信有更好的方法(如果您知道,请在此处发布),否则我的“hack”似乎工作正常。

希望对遇到类似问题的人有所帮助。

关于android - 滚动 ListView 后 onChildClick 事件停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6645490/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com