Glide - Нет изображения из Firebase - PullRequest
3 голосов
/ 04 мая 2019

Я создаю приложение, которое отображает сообщения на главном экране. После добавления нового поста мы видим только текст без картинок.

Я использую Пикассо и скользлю. Но без результата.

protected void onStart() {
    super.onStart();

    Query query = FirebaseDatabase.getInstance().getReference().child("Post");

    FirebaseRecyclerOptions<PostList> options = new FirebaseRecyclerOptions.Builder<PostList>().setQuery(query, PostList.class).build();

    FirebaseRecyclerAdapter<PostList, PostListHolder> firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<PostList, PostListHolder>(options) {

        @Override
        public PostListHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.post_row, parent, false);
            return new PostListHolder(view);
        }

        @Override
        protected void onBindViewHolder(@NonNull PostListHolder holder, int position, @NonNull PostList model) {
            holder.setImage(getApplicationContext(), model.getImage(), holder);
            holder.setTitle(model.getTitle());
            holder.setDescription(model.getDescription());

        }
    };

        void setImage(Context ctx, String image) {

            ImageView postImage = mView.findViewById(R.id.postImg);
            Glide.with(ctx).load(image).dontAnimate().fitCenter().into(postImage);
        }

    }

Ответы [ 2 ]

2 голосов
/ 04 мая 2019

Похоже, проблема в этой строке: ImageView postImage = mView.findViewById(R.id.postImg);

вы не используете свое RecyclerView.ViewHolder изображение, и вы просто используете какое-то изображение, которое не связано с вашей текущей строкой reyclerVie, поэтому glide фактически работает, но вы не используете правильное изображение.

Вам нужно сделать что-то похожее на это:

  holder.setImage(getApplicationContext(), model.getImage(),yourHolder);

И получите доступ к вашему holder.imageView из метода:

void setImage(Context ctx, String image,ViewHolder holder) {  
  Glide.with(ctx).load(image).dontAnimate().fitCenter().into(holder.postImage);
}
0 голосов
/ 04 мая 2019

Я пытался добавить держатель:

 public class PostListHolder extends RecyclerView.ViewHolder {

        final View mView;

        PostListHolder(@NonNull View itemView) {
            super(itemView);

            mView = itemView;
        }

        void setImage(Context ctx, String image, PostListHolder holder) {

            ImageView postImage = mView.findViewById(R.id.postImg);
            Glide.with(ctx).load(image).dontAnimate().fitCenter().into(holder.postImage);
        }

    }

, но в строке

Glide.with(ctx).load(image).dontAnimate().fitCenter().into(holder.postImage);

все еще что-то не так - postImage (не может разрешить postImage)

Журнал:

  java.io.FileNotFoundException(/com.google.android.gms.tasks.zzu@dfa913d (No such file or directory))
java.io.FileNotFoundException(open failed: ENOENT (No such file or directory))

enter image description here

...