1

我有一个列表视图,里面有一堆不同大小的项目

我有一个按钮可以滚动到列表视图中的某个项目

但是,当这个项目是最后一个时,当这个项目变得可见时,列表视图当然会停止

但我希望列表视图以这样的方式向上滚动,最后一项是屏幕上唯一可见的项目 - 并且列表的底部是空白的

我该怎么做呢?

我的滚动方法:

    public void scrollTo(int newPosition) {

    lv.smoothScrollToPositionFromTop(newPosition+ 1, 0, 500);

    handler.postDelayed(new Runnable() {

        @Override
        public void run() {
            //this is needed in order for the item to be at the top
                     //because the listview stops, if scrolling from top down, and stops 
                     //once item becomes visible
            lv.smoothScrollToPositionFromTop(newPoisition+ 1, 0, 0);
        }
    }, 501);

}

这是手动添加虚拟项目的崩溃报告

在此处输入图像描述

4

1 回答 1

0

好吧,您可以通过以下方式执行此操作:

  • 检测列表视图的结尾。
  • 当列表视图到达末尾时,保留列表中的最后一个(用于填充列表的数组列表)并删除所有其他并刷新列表。如果您不想删除它们,只需复制到另一个数组列表并复制回项目,如果用户需要再次向上移动。

要检测列表视图的结尾,您可以使用以下类:

  public final class GVOnScrollListener implements AbsListView.OnScrollListener {
       public void onScroll(AbsListView view, int firstVisibleItem,
                int visibleItemCount, int totalItemCount) {

            if (loading) {
                if (totalItemCount > previousTotal) {
                    loading = false;
                    previousTotal = totalItemCount;
                    offset++;
                }
            }

            if  (!loading && totalItemCount == (firstVisibleItem + visibleItemCount) && (productCount > totalItemCount)) {
                productListServiceRequest();
                businessResultListView.setSelection(firstVisibleItem);
                loading = true;
                  new Handler().postDelayed(new Runnable() {
                      public void run() {

                     readyToRequest = true;         

                      }
              }, 2000);

                  readyToRequest = false;

            }

       }

    public void onScrollStateChanged(AbsListView view, int scrollState) {

    }

  }

并将其设置为列表视图,如:

listview.setAdapter(businessPromotionListAdapter);

通过上面的类,你可以看到:

  • 您可以在屏幕中看到的项目数。
  • 您向上滚动的项目数。
  • 列表中的项目总数。
于 2013-11-06T15:45:26.943 回答