首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >回收站:向下滚动

回收站:向下滚动
EN

Stack Overflow用户
提问于 2019-05-03 23:58:07
回答 3查看 529关注 0票数 0

我有一个动态填充的RecyclerView。

当一条新消息到达时,我使用下面的代码向下滚动到最后一个条目:

代码语言:javascript
运行
复制
recyclerView.scrollToPosition(adapter.getItemCount() - 1);

现在的问题是:如果用户滚动以读取旧消息,则不应该向下滚动。我怎么能察觉到呢?

EN

Stack Overflow用户

回答已采纳

发布于 2019-05-05 04:26:01

我假设您使用的是带有某种RecyclerView的自定义适配器。只需创建静态布尔变量,当在适配器中到达底部时(如下面所示),该变量将有助于保持正确,在本例中,我假设是recyclerView。

代码语言:javascript
运行
复制
public class ChatAdapter extends RecyclerView.Adapter<ChatAdapter.ViewHolder> {

    public static boolean bottomReached = false;

      @Override //Make sure it happens on bindViewHolder or related...
        public void onBindViewHolder(final ViewHolder holder, int position) {
                if (position == data.size() - 1)
                    bottomReached = true;
                else
                    bottomReached = false;

        }

}

因此,在您的活动中,例如chatActivity,我们喜欢下面的内容。

代码语言:javascript
运行
复制
public class ChatActivity extends AppCompatActivity{
ChatAdapter chatAdapter;

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_chat);

        chatAdapter = new ChatAdapter(this, messagesDataSample);
}

private void gotNewMessage(){
   if(chatAdapter.bottomReached)
      recyclerView.scrollToPosition(adapter.getItemCount() - 1);
   else
      // else is not necessary as you don't want to do anything.
}

}

希望这能有所帮助,否则请让我知道出了什么问题。

票数 1
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55978333

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档