为什么在滚动后ListView的项目变得不可点击

3
我创建了一个自定义的 ListView,其中包含 ImageViewTextViews,一切都很正常,直到我尝试实现 onItemClick,暂时只显示一个 Toast。
当我滚动我的 ListView 时,问题就出现了:它不会接收任何点击事件。
有趣的是,当我使用键盘在项目之间移动时,它可以工作,并且当我按下回车键时,Toast 被显示出来了。
这是我用于 onItemClick 监听器的代码。
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    RestaurantReservationBean clickedItem = resultArray.get(position);

    Toast.makeText(this, clickedItem.getName()+", "+clickedItem.getCost(), 1000).show();
}

2
请发布与您的ListView相关的所有代码。您正在使用的适配器以及用于获取单击回调的onClickListener。如果没有这些代码,很可能没有人能够提供帮助。 - FoamyGuy
这是由于政治影响...换句话说...没有一些Java和XML代码的部分,无法回答这个问题。 - Selvin
1个回答

10

我认为我解决了这个问题:在查阅一些文档后,我发现这个问题来自于每行顶部的TextView和ImageView挡住了onItemSelected监听器。所以我尝试在滚动后刷新ListView,它完美地解决了问题。以下是我的操作,希望能帮助那些可能遇到此问题的人。

listView.setOnScrollListener(new OnScrollListener() {
        public void onScrollStateChanged(AbsListView view, int scrollState) {
            if ( scrollState == OnScrollListener.SCROLL_STATE_IDLE )
            {
              listView.invalidateViews();
            }

        }

        @Override
        public void onScroll(AbsListView arg0, int arg1, int arg2, int arg3) {}
    });

非常感谢,这是一个奇怪的问题,你帮了我一个大忙。 :) - Jay Mayu
我也遇到了一个非常奇怪的问题,如果我通过返回按钮从另一个活动回到GridView活动,则GridView将变得无法点击。这种情况只发生在Honeycomb上。在onResume()中加入invalidateViews()调用似乎可以解决这个问题。 - Artem Russakovskii
我遇到了相同的问题。在滚动ListView中,按钮不起作用。按钮状态会更改为选定状态,并保持该状态,按钮的onclick监听器也不会被调用。 - Abdullah Umer
非常感谢,你救了我的一天!已解决可扩展列表视图的类似问题。 - x.iva

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接