【问题标题】:Retrieving images from Firebase storage into recyclerview从 Firebase 存储中检索图像到 recyclerview
【发布时间】:2017-04-06 07:28:58
【问题描述】:

如何通过使用 Picasso 在我的 Firebase 存储中获取其 URL 来检索图像,以便将其加载到 recyclerview 持有者中。我在毕加索看到了这个,但我不知道如何实现它。

Picasso.with(context).load("http://i.imgur.com/DvpvklR.png").into(aImage);

我也搜索过,但我看到的样本完全不同。

这里是sn-ps的代码:

import com.firebase.ui.database.FirebaseRecyclerAdapter;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.storage.FirebaseStorage;
import com.google.firebase.storage.StorageReference;
import com.squareup.picasso.Picasso;
import .......

public class FragSearch extends Fragment {

RecyclerView mRecyclerView;
private DatabaseReference mDatabaseReference;
private LinearLayoutManager mLinearLayoutManager;

private StorageReference mStorageRef;
private FirebaseRecyclerAdapter<MsgPack, MessageViewHolder> mFirebaseAdapter;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    final View view = inflater.inflate(R.layout.up_msg, container, false);

    mRecyclerView=(RecyclerView)view.findViewById(R.id.recycleNView);
    mRecyclerView.setHasFixedSize(false);
    mLinearLayoutManager=new LinearLayoutManager(getContext());

    return view;
}

@Override
public void onStart() {
    super.onStart();
    mStorageRef = FirebaseStorage.getInstance().getReference();
    mDatabaseReference= FirebaseDatabase.getInstance().getReference();
    mFirebaseAdapter=new FirebaseRecyclerAdapter<MsgPack, MessageViewHolder>(
            MsgPack.class,
            R.layout.post_listing,
            MessageViewHolder.class,
            mDatabaseReference.child("stackpack"))
    {

        @Override
        protected void populateViewHolder(final MessageViewHolder viewHolder, MsgPack model, int position) {

            viewHolder.bText.setText(model.getTopic());
            viewHolder.dText.setText(model.getImageurl());

        }
    };

    mRecyclerView.setAdapter(mFirebaseAdapter);
    mRecyclerView.setLayoutManager(mLinearLayoutManager);
}

@Override
public void onResume() {
    super.onResume();
}

public static class MessageViewHolder extends RecyclerView.ViewHolder{
        public TextView aText,bText,cText;
    View mView;
    LinearLayout pack;
    ImageView aImage;

    public MessageViewHolder(View v) {
        super(v);
        mView=v;


        bText = (TextView) mView.findViewById(R.id.txtTopic);
        aImage=(ImageView)mView.findViewById(R.id.imageView);

        /*How do I load retrieve the images via url in my firebase storage using picasso
       */ Picasso.with(context).load("http://i.imgur.com/DvpvklR.png").into(aImage);
    }
}
}

json格式

{"stackpack" : {
  "imageurl" : "http://firebase.........er23...",
  "topic" : "THANKS"
},   
}

msgPack.class

.....
public class MsgPack {

private String topic;
private String imageurl;
public MsgPack(){
}
public MsgPackString topic, String imageurl) {   
    this.topic = topic;
    this.imageurl=imageurl;

}

public String getTopic() {
    return topic;
}
public String getImageurl() {
    return imageurl;
}
public void setTopic(String topic) {
    this.topic = topic;
}
public void setImageurl(String imageurl) {
    this.imageurl = imageurl;
}
}

我只是想从实时 firebase 中获取 imageurl(这是一个指向 firebase 存储中的资源的字符串)值,然后我的 imageview 使用 picasso 加载该 imageurl

【问题讨论】:

  • 你应该在onBindViewHolder适配器的方法中这样做
  • 拜托,我如何在 onBindViewHolder 中做到这一点。有没有我可以看到的指南来了解我如何实现这一目标@VladMatvienko
  • 扩展 FirebaseRecycleAdapter,并覆盖其中的 onBindViewHolder

标签: android firebase firebase-realtime-database firebase-storage


【解决方案1】:

您可以在populateViewHolder 方法上使用它。只需从 ImageView 中获取上下文:

@Override
protected void populateViewHolder(final MessageViewHolder viewHolder, MsgPack model, int position) {
    viewHolder.bText.setText(model.getTopic());
    viewHolder.dText.setText(model.getImageurl());
    Picasso.with(viewHolder.aImage.getContext())
           .load(model.getImageurl())
           .into(viewHolder.aImage);
}

【讨论】:

  • 这解决了我的问题,我很感激@Rosário Pereira Fernandes
猜你喜欢
  • 1970-01-01
  • 2020-10-23
  • 2018-05-11
  • 1970-01-01
  • 2017-08-30
  • 2020-01-06
  • 2017-02-23
  • 1970-01-01
相关资源
最近更新 更多