首页 > 解决方案 > 一旦我输入昵称,用户就不会显示在 recyclerView 中

问题描述

我正在使用 android studio (SDK 29) 用 java 制作一个 android 应用程序。一旦我进入搜索屏幕,就会显示所有用户。但是一旦我输入用户的昵称,它们就会全部消失,而不是显示我搜索过的昵称。

我运行调试器以更好地了解正在发生的事情,一旦我在搜索字段中输入昵称,调试器就会显示以下消息:

W/Glide:未能找到 GeneratedAppGlideModule。您应该在应用程序中包含对 com.github.bumptech.glide:compiler 的 annotationProcessor 编译依赖项,并且 @GlideModule 注释的 AppGlideModule 实现或 LibraryGlideModules 将被静默忽略 I/censapplicio:编译器分配 4MB 来编译 void android.widget.TextView.( android.content.Context, android.util.AttributeSet, int, int) I/AssistStructure:扁平化最终辅助数据:5580 字节,包含 1 个窗口,23 个视图 W/ExifInterface:停止读取文件,因为错误的偏移量可能导致无限循环:0 W/ExifInterface:停止读取文件,因为错误的偏移量可能导致无限循环:0 D/ViewRootImpl@7a531ea[UserProfile]:MSG_RESIZED:frame=[0,0][1080,2340] ci=[0,83] [0,126] vi=[0,83][0,1003] or=1 W/Glide:加载失败,大小为 [131x131] 类 com.bumptech。

这是我在适配器中调用 Glide 的代码行:

        Glide.with(mContext).load(user.getImage()).into(viewHolder.image_profile);

这是我的方法 SearchUsers():

private void searchUsers(String s){

    Query query = FirebaseDatabase.getInstance().getReference("Users").orderByChild("nickname")
            .startAt(s)
            .endAt(s+"\uf8ff");

    query.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            mUsers.clear();
            for (DataSnapshot snapshot : dataSnapshot.getChildren()){
                User user = snapshot.getValue(User.class);
                mUsers.add(user);
            }

            userAdapter.notifyDataSetChanged();
        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }
    });
}

我检查了 10 多个可能的解决方案,但没有一个有效。

我不确定这个错误是来自代码本身还是与 Glide 的依赖关系相关的任何问题。

标签: javaandroidsearchandroid-glide

解决方案


首先导入注释:

repositories {
    mavenCentral()
}

dependencies {
    annotationProcessor 'com.github.bumptech.glide:compiler:4.11.0'
}

同步项目然后创建一个类

import com.bumptech.glide.annotation.GlideModule;
import com.bumptech.glide.module.AppGlideModule;

@GlideModule
public class GlideApp extends AppGlideModule {

}

之后,我构建/重建项目

如我所见,您使用以下 glidemodule 使用 firebase 商店:

@GlideModule
public class MyAppGlideModule extends AppGlideModule {

    @Override
    public void registerComponents(Context context, Glide glide, Registry registry) {
        // Register FirebaseImageLoader to handle StorageReference
        registry.append(StorageReference.class, InputStream.class,
                new FirebaseImageLoader.Factory());
    }
}

推荐阅读