2017-04-06 14 views
1

Picasaを使用してFirebaseストレージ内のURLを取得し、recyclerviewホルダーにロードする方法で画像を取得するにはどうすればよいですか?私はピカソでこれを見ましたが、私はそれをどのように実装するのか分かりません。
Picasso.with(context).load( "http://i.imgur.com/DvpvklR.png").into(aImage); 私も周りを検索していますが、私が見ているサンプルはかなり異なっています。ここでFirebaseストレージからrecyclerlerviewに画像を取得する

は、コードスニペットです:

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 storageのリソース)をリアルタイムのfirebaseから取得し、私のimageviewはそのimageurlを読み込みます。ピカソ

+0

あなたは –

+0

'onBindViewHolder'アダプターの方法でそれを行う必要がありますしてください、私は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

関連する問題