2017-04-06 58 views
1

如何通过使用Picasso在我的Firebase存储中获取图像来获取图像,以便将其加载到recyclerview持有者中。我在毕加索看到了这个,但我不知道如何实现它。
Picasso.with(context).load(“http://i.imgur.com/DvpvklR.png”).into(aImage); 我也有搜索,但我看到的样本是完全不同的。将Firebase存储中的图像转换为recyclerview

以下是代码片段:

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; 
} 
} 

我只是想获取IMAGEURL(这是一个字符串指向来自实时Firebase的Firebase存储资源)的值,并且我的imageview会加载该图像使用情况picasso

+0

你应该这样做在'onBindViewHolder'适配器的方法 –

+0

请,我该怎么办呢在onBindViewHolder。有没有一个指南,我可以看到知道我可以如何实现这个@VladMatvienko – user7824884

+0

扩展FirebaseRecycleAdapter,并覆盖onBindViewHolder在它 –

回答

0

您可以在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); 

     } 
+0

这解决了我的问题,我很感谢@RosárioPereira Fernandes – user7824884