当当前位置是listview的lastitem时,onScroll()不会执行

时间:2015-01-23 14:30:16

标签: android listview android-listview

当滚动位于屏幕底部时,我正在尝试进行ListView更新,我几乎已将其设置为有效但滚动仍然存在轻微问题。

首先,我的代码是检测ListView的lastItem,

public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
                currentFirstVisibleItem = firstVisibleItem;
                currentVisibleItemCount = visibleItemCount;
                ttc = totalItemCount;
                  // check if the current item is last,
                    if (currentFirstVisibleItem+currentVisibleItemCount == ttc){
                        Log.e("ss","I am here");
                        if (totalTime == timeConsumed){
                            Log.e("Last","Last");
                            // add data on listView
                            // update listView
                            notifyDataSetChanged();

                        }
                    }
                }

当我执行应用时,我会一直滚动到底部,以便if (currentFirstVisibleItem+currentVisibleItemCount == ttc)条件成为现实,并且因为我收到了Log.e I am here上的消息而正常工作。< / p>

此时,我已经处于屏幕底部并等待 if (totalTime == timeConsumed)阻止执行,将在5秒后执行。一旦if (totalTime == timeConsumed)块被执行,我就会收到日志消息Log.e("Last","Last");,因为我已经位于ListView的底部,但问题是,notifyDataSetChanged未执行自动发生,虽然我已经在ListView的底部,为了执行notifyDataSetChanged(),我必须触摸屏幕,然后才会执行。

执行notifyDataSetChanged()时,为什么Log.e("Last","Last");未执行?即使我已经在屏幕的底部?为什么我必须触摸屏幕才能执行notifyDataSetChanged()

1 个答案:

答案 0 :(得分:0)

您是否考虑过在适配器中处理此功能?在getView中,您可以检查该位置是否是最后一个数据项,并启动异步调用以加载另一页数据。