Android 添加数据时,Firebase会自动滚动列表视图

Android 添加数据时,Firebase会自动滚动列表视图,android,listview,firebase,firebase-realtime-database,firebaseui,Android,Listview,Firebase,Firebase Realtime Database,Firebaseui,我正在开发一个聊天应用程序,我正在使用firebase listview ui,它工作得很好,但我的问题是,当数据插入数据库时,listview不会自动向下滚动,当重新打开listview活动时,它从顶部开始,我必须向下滚动几分钟才能看到插入的新数据,你能帮我实现这个吗 FirebaseListAdapter<Chats> chatsFirebaseListAdapter = new FirebaseListAdapter<Chats>( this

我正在开发一个聊天应用程序,我正在使用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);
FirebaseListAdapter chatsFirebaseListAdapter=新建FirebaseListAdapter(
这
聊天课,
R.layout.u布局,
阅读信息
) {
@凌驾
受保护的void populateView(视图v、聊天模型、int位置){
TextView用户名=(TextView)v.findViewById(R.id.textViewUsername);
username.setText(model.getUsername());
TextView消息=(TextView)v.findViewById(R.id.textViewMessage);
message.setText(model.getMessage());
TextView日期=(TextView)v.findViewById(R.id.textViewDate);
date.setText(model.getDate());
}
};
smoothScrollToPosition(chatsFirebaseListAdapter.getCount()-1);
setAdapter(chatsFirebaseListAdapter);

您可以使用此功能将滚动设置为聊天室的底部

listView.smoothScrollToPosition(adapter.getCount() -1);

您可以使用此选项将列表自动滚动到底部,无论当前显示哪些项目


listView.setTranscriptMode(listView.TRANSCRIPT\u MODE\u ALWAYS\u SCROLL)

如果您使用的是recyclerView,我建议您使用recyclerView,因为它比listView好得多

尝试此操作(仅限回收器视图)

而不是

listView.smoothScrollToPosition(chatsFirebaseListAdapter.getCount()-1)也将防止从上到下滚动

如果您可以在firebase获得新的mesage并添加到列表中时使用listner
这里还使用lv_chatList.scrollToPosition(messagesList.size()-1)一旦数据加载到列表中


如果您不能满足您的需要,请在下面进行评论

删除平滑滚动并简单使用scrolltoi我没有得到您评论的内容,请使用一些示例代码贴相关代码为我描述一下。我已在上面添加了我的代码,以便您查看我是否使用过它write@JamaMohamed首先设置适配器,然后调用smoothScrollToPosition.sorry但是没有wrkSuppose如果您知道列表数据何时发生更改,则可以通过将列表选择设置为最后一行来手动告诉列表滚动到底部。类似于:private void scrollListViewToBottom(){myListView.post(new Runnable(){@Override public void run(){//选择最后一行以便滚动到视图中…myListView.setSelection(myListAdapter.getCount()-1);}}}}
listView.scrollToPosition(chatsFirebaseListAdapter.getCount() -1);