如何使用 Picasso 在我的 Firebase 存储中获取图像的 URL 来检索图像,以便将其加载到 recyclerview 容器中。我在毕加索看到了这个,但我不知道如何实现它。
Picasso.with(context).load("http://i.imgur.com/DvpvklR.png").into(aImage);
我也搜索过,但我看到的样本有很大不同。
下面是代码 fragment :
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
最佳答案
您可以在 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);
}
关于android - 将图像从 Firebase 存储检索到 recyclerview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43248484/