是否有ScrollView滚动的监听器?

时间:2011-02-25 18:48:09

标签: android

我在ScrollView中有一个TableLayout,由于一些特殊需要,我需要在ScrollView到达顶部时做一些事情。是否有这样的倾听者倾听用户的滚动操作?或者,如果没有现成的侦听器,我可以将ScrollView子类化(我认为这会很痛苦)来实现吗?我需要采用哪些方法来实施?到目前为止,我没有看到解决方案,但我希望这只是因为我错过了一些东西......

谢谢!

(如果你想知道我为什么要这样做,这里有更多背景知识:

我有一个平面文件数据库,我使用TableLayout来显示查询结果。当查询生成数千行时,填充表(使用TableLayout.addView()添加行)所花费的时间变得不可接受 - 在模拟器上一分钟!并且,特别需要在表格显示时,必须将其放在最后一页。也就是说,我必须首先填充最后几行,然后向上增长,而当表增长时显示保持不变。到目前为止,我尝试过两种方法所以我不得不稍微降低要求---我不会一次填充所有3,000行,相反,我只填充最后几页,比如最后40行左右。这样,用户将立即看到显示的结果。然后,当他决定向上滚动时,当程序看到它时,然后我再填充几页,等等。因此,我需要一个监听器或某种方式来检测表或滚动视图何时到达顶部。感谢您阅读到目前为止!)

1 个答案:

答案 0 :(得分:1)

您可能需要考虑扩展BaseAdapter http://developer.android.com/reference/android/widget/ArrayAdapter.html并覆盖getView(int position, View convertView, ViewGroup parent)。 在那种方法中,您可以检查位置。因此,如果您首先填写10个项目并且位置为10,那么您就知道自己已经到达列表的底部,并且可以在列表中添加更多项目。如果位置为0,您就知道自己位于列表顶部.LinView中还有一种方法可以让您的项目从底部开始(如信使应用程序)http://developer.android.com/reference/android/widget/AbsListView.html#setStackFromBottom(boolean)。