2016-12-01 1 views
0

私のアプリの断片にストアのリストのためのカードビューを作成しましたが、今は私の断片で受け取ったストアの情報(名前、画像など)別のクラスである私のカードビューアダプタに入れます。どのようにクラスにフラグメントから画像を通過しないとどのようにクラスでGETを要求するCardviewは、断片化したボレーを持つURLからの画像を使用しています

私は私の店のリストを呼び出し

マイフラグメント:

public class StoreList extends Fragment{ 
int row; 
private Switch mySwitch; 
private static String api = "stores"; 
RecyclerView mRecyclerView; 
@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 


    //my domain 
    SharedPreferences sp=this.getActivity().getSharedPreferences("domainname", Context.MODE_PRIVATE); 
    String domain = sp.getString("domainname", ""); 

    final View rootView = inflater.inflate(R.layout.store_list, container, false); 
    VolleyGet.getInstance(getActivity()); 
    VolleyGet.getInstance().VolleyGET(domain, api, new CustomListener<String>(){ 
     @Override 
     public void getResult(String result){ 
      if (!result.isEmpty()) 
      { 
       Log.e("storelist---------->", result); 
       //result for storelist 

      } 

     } 

    }); 
mRecyclerView = (RecyclerView)rootView.findViewById(R.id.recycler_view); 
     mRecyclerView.setHasFixedSize(true); 


     RecyclerView.LayoutManager gmLayoutManager = new GridLayoutManager(getActivity(),row); 
     mRecyclerView.setLayoutManager(gmLayoutManager); 
     RecyclerView.Adapter mAdapter; 
     mAdapter = new CardAdapter(); 
     mRecyclerView.setAdapter(mAdapter); 
     return rootView; 
} 

GETメソッド

を要求するためのVolleyGet.class
public class VolleyGet { 
private static final String TAG = "VolleyGet"; 
private static VolleyGet instance = null; 

//for Volley API 
public RequestQueue requestQueue; 

private VolleyGet(Context context) 
{ 
    requestQueue = Volley.newRequestQueue(context.getApplicationContext()); 

    return; 


} 

public static synchronized VolleyGet getInstance(Context context) 
{ 
    if (null == instance) 
     instance = new VolleyGet(context); 
    return instance; 
} 

public static synchronized VolleyGet getInstance() 
{ 
    if (null == instance) 
    { 
     throw new IllegalStateException(VolleyGet.class.getSimpleName() + 
       " is not initialized, call getInstance(...) first"); 
    } 
    return instance; 

} 

public void VolleyGET(String domain, String api, final CustomListener<String> listener){ 

    StringRequest sr = new StringRequest(Request.Method.GET, domain +api, 
      new Response.Listener<String>() { 


       @Override 
       public void onResponse(String response) { 
        Log.e("HttpClient", "success! response: " + response); 
        if(null != response) 
        listener.getResult(response); 
        return; 
       } 
      }, 
      new Response.ErrorListener() { 
       @Override 
       public void onErrorResponse(VolleyError error) { 
        if (null != error.networkResponse) 
        { 
         Log.d(TAG + ": ", "Error Response code: " + error.networkResponse.statusCode); 
         //listener.getResult(false); 
        } 
       } 
      }); 
    requestQueue.add(sr); 

}} 

マイCustomListener

public interface CustomListener<T> { 
public void getResult(T object); 
} 

JSONObject私はこれになります受信しますM:

{"data":[{"id":"1127ae33-e435-4506-9cb2-8806f6b77636", 
"name":"Japan Clothing Tokyo branch", 
"wifi":true, 
"pending":true, 
"averageCost":"100-200", 
"business":{"name":"Japan Clothing","type":"clothing"}, 
"photo":{f7e0f9a0-592a-424a-9d94-8334df7aed2c.jpg}, 
...//same format of other stores depending on how many there are in my database, this case 21 stores... 
"length":21,"limit":10,"offset":0} 

マイCardAdapter:

public class CardAdapter extends RecyclerView.Adapter<CardAdapter.ViewHolder>{ 



    List<Stores>  mItems; 

    public CardAdapter() { 
     super(); 
     mItems = new ArrayList<Stores>(); 
     Store store = new Store(); 
     store.setName("get store name from StoreList"); 
     store.setThumbnail(image from photo in StoreList); 
     mItems.add(store); 

     ...... 
    } 

    @Override 
    public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { 
     View v = LayoutInflater.from(viewGroup.getContext()) 
       .inflate(R.layout.store_cardview, viewGroup, false); 
     ViewHolder viewHolder = new ViewHolder(v); 
     return viewHolder; 
    } 

    @Override 
    public void onBindViewHolder(ViewHolder viewHolder, int i) { 
     Movie movie = mItems.get(i); 
     viewHolder.tvMovie.setText(movie.getName()); 
     viewHolder.imgThumbnail.setImageResource(store.getThumbnail()); 
    } 

    @Override 
    public int getItemCount() { 
     return mItems.size(); 
    } 

    class ViewHolder extends RecyclerView.ViewHolder{ 

     public ImageView imgThumbnail; 
     public TextView tvStore; 

     public ViewHolder(View itemView) { 
      super(itemView); 
      imgThumbnail = (ImageView)itemView.findViewById(R.id.img_thumbnail); 
      tvStore = (TextView)itemView.findViewById(R.id.tv_store); 
     } 
    } 
} 

CardViewのXML:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:card_view="http://schemas.android.com/apk/res-auto" 
android:orientation="vertical" android:layout_width="match_parent" 
android:layout_height="match_parent"> 


<android.support.v7.widget.CardView 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:clickable="true" 
    android:background="?android:selectableItemBackground" 
    card_view:contentPadding="@dimen/activity_horizontal_margin" 
    card_view:cardCornerRadius="20dp" 
    card_view:cardElevation="10dp" 

> 

    <ImageView 
     android:id="@+id/img_thumbnail" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     /> 

    <TextView 
     android:id="@+id/tv_store" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:paddingLeft="@dimen/activity_horizontal_margin" 
     android:paddingRight="@dimen/activity_horizontal_margin" 
     android:layout_below="@id/img_thumbnail" 
     android:layout_gravity="bottom" 
     android:gravity="center_vertical" 
     android:background="#757575" 
     android:alpha="0.8" 
     android:textSize="@dimen/abc_text_size_headline_material" 
     android:text="Test"/> 

</android.support.v7.widget.CardView> 

私が達成したい何がカードのリストで、各カード上半分が含まれていますしたがって、画像は私が受け取るJSONObjectを使用してGETによって要求され、カードの下半分には店舗名など。私の質問は、画像をリクエストして断片からカードアダプタークラスに渡してカードに表示する方法です。

答えて

0

PicassoをURLから読み込んでImageViewに表示することができます。例:Picasso.with(context).load("your_img_url.jpg").into(imageView);

あなたのケースでは、アダプタ内でピカソを使用することができます。イメージURLをアダプターに渡すだけです。

関連する問題