为了账号安全,请及时绑定邮箱和手机立即绑定

Firebase 到 ImageView - 为什么即使没有图像,我的聊天也会显示图像?

Firebase 到 ImageView - 为什么即使没有图像,我的聊天也会显示图像?

炎炎设计 2021-10-28 15:25:54
我有一个用于 Firebase 聊天的标准聊天显示方法:private void displayChat() {    final ListView listOfMessage = findViewById(R.id.list_of_message);    final String DATABASE_URL = "https://firebasestorage.googleapis.com";    Query query = FirebaseDatabase.getInstance().getReference().child("messages").child(chatName).limitToLast(20);    FirebaseListOptions<Message> options = new FirebaseListOptions.Builder<Message>()            .setLayout(R.layout.list_item)            .setQuery(query, Message.class)            .setLifecycleOwner(this)            .build();    FirebaseListAdapter<Message> adapter = new FirebaseListAdapter<Message>(options) {        @Override        protected void populateView(View v, Message model, int position) {            //Get reference to the views of list_item.xml            TextView messageText, messageUser, messageTime;            ImageView img;            messageText = v.findViewById(R.id.message_text);            messageUser = v.findViewById(R.id.message_user);            messageTime = v.findViewById(R.id.message_time);            img = v.findViewById(R.id.imgView);聊天功能齐全。但是,当涉及到图像时,我必须DATABASE_URL确定接收到的应该是图像而不是文本,因此我将其加载到 Picasso 中,如下所示: if (model.getMessageText().contains(DATABASE_URL)) {                messageText.setText("Image sent: ");                Picasso.with(getApplicationContext()).load(model.getMessageText()).into(img);            }但是,当它是普通文本时,我的:else {     messageText.setText(model.getMessageText());}将正常显示文本,但仍显示图像 - 始终显示最近的图像。我曾尝试添加img.setVisibility(View.INVISIBLE);到else语句中,以及从 Glide/Picasso 中进行等效删除,但它们最终都会导致每张图像都被删除而不显示。
查看完整描述

1 回答

?
精慕HU

TA贡献1845条经验 获得超8个赞

这是因为您正在重用一种布局。接下来显示的每个视图都将重用前一个视图。如果您不使布局的视图无效,则可能会发生其中一个视图包含旧数据的情况。

这种布局就像一个骨架,您可以在其中固定一些元素。然后有人想重用你的骨架。他用你的东西得到它。所以他必须删除所有元素,然后他可以固定自己的东西。如果你在骨架中弯曲了一些东西,下一个人将不得不伸直,否则他将拥有带有弯曲元素的骨架(即setVisibility(INVISIBLE)->setVisibility(VISIBLE))。

获得布局后,立即重置所有视图中的值。


查看完整回答
反对 回复 2021-10-28
  • 1 回答
  • 0 关注
  • 135 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信