我正在使用聊天应用程序,我正在使用firebase listview ui,效果很好,但我的问题是当数据插入数据库时,listview不会自动向下滚动,当重新打开listview活动时,它从我必须向下滚动几分钟以查看插入的新数据的顶部,你能帮我实现这个
FirebaseListAdapter<Chats> chatsFirebaseListAdapter = new FirebaseListAdapter<Chats>(
this,
Chats.class,
R.layout.messaging_layout,
readMessages
) {
@Override
protected void populateView(View v, Chats model, int position) {
TextView username = (TextView) v.findViewById(R.id.textViewUsername);
username.setText(model.getUsername());
TextView message = (TextView) v.findViewById(R.id.textViewMessage);
message.setText(model.getMessage());
TextView date = (TextView) v.findViewById(R.id.textViewDate);
date.setText(model.getDate());
}
};
listView.smoothScrollToPosition(chatsFirebaseListAdapter.getCount() -1);
listView.setAdapter(chatsFirebaseListAdapter);
答案 0 :(得分:0)
您可以使用此功能将滚动设置为聊天的底部
listView.smoothScrollToPosition(adapter.getCount() -1);
答案 1 :(得分:0)
您可以使用此功能自动将列表滚动到底部,无论当前哪些项目可见。
listView.setTranscriptMode(ListView.TRANSCRIPT_MODE_ALWAYS_SCROLL);
答案 2 :(得分:0)
如果您正在使用recyclerView,我还建议使用recyclerView,因为它远远优于listView
尝试此操作(仅限Recycler View)
listView.scrollToPosition(chatsFirebaseListAdapter.getCount() -1);
而不是
listView.smoothScrollToPosition(chatsFirebaseListAdapter.getCount() -1);
也会阻止从上到下的滚动
如果你可以在firebase获取新消息时添加列表,并添加到列表中
数据加载到列表后there also use lv_chatList.scrollToPosition(messagesList.size() - 1);
如果您无法满足需求,请在下方发表评论