如何查看listview的最后一项是否可见..?

时间:2015-08-06 06:13:30

标签: android listview count visible listitem

我的要求很简单。 在我的应用程序中,有一个列表视图,其中包含聊天消息和屏幕顶部的箭头图标。新项目将动态添加,我想通过检查某些条件,在新邮件到达时显示此箭头图标,

1. Arrow will be shown if listview is not at bottom (ie last item is not visible).
2. Arrow will be dismissed when user scrolls listview to bottom.
3. Arrow will not be showed if listview is at bottom.   

我使用了一个布尔值来检查listvew的位置状态, 当新消息到达时,我正在检查,

                   if(isAtBottom){
                   // Adding to list
                     mChatMessages.add(mNewMessage);
                     mAdapter.setListing(mChatMessages);
                     scrollListViewToBottom();
                   }else{
                     mChatMessages.add(mNewMessage);
                     mAdapter.setListing(mChatMessages);
                     startArrowIndicator();
                   }

当用户滚动列表视图时,使用以下代码,

 @Override
        public void onScroll(AbsListView absListView, final int firstVisibleItem,
                             final int visibleItemCount, final int totalItemCount) {
            final int lastItem = firstVisibleItem + visibleItemCount;
            if(lastItem == totalItemCount) {
                stopArrowIndicator();
                isAtBottom = true;
            }else{
                isAtBottom = false;
            }
        }

但是这段代码没有用......任何想法......?

1 个答案:

答案 0 :(得分:0)

指示器显示是否没有足够的数据:在显示之前,先检查最后一个可见位置是否等于列表视图长度。

ListView lv = getListView();
if(lv.getCount() != lv.getLastVisiblePosition() + 1)
    // show the indicator

检查新项目是否可见:如果新项目已添加到顶部,请检查它是否小于第一个可见位置

int itemPos = 0;
if(itemPos < lv.getFirstVisiblePosition())
    // show the indicator

如果它被添加到底部,请检查它是否大于最后一个可见位置。

int itemPos = lv.getCount();
if(itemPos > lv.getLastVisiblePosition())
    // show the indicator