2017-10-24 6 views
1

ImageURIとAPIから取得する2つの文字列とともに、MenuItemsModel(モデル)クラスのデータリストがあります。ピカソで画像URLを読み込む方法と、読み込まれた画像をrecyclerviewにバインドする方法は?ここでandroid-picassoから読み込まれた画像をリサイクラビューにバインドする方法

は私のコード

コードはここ

public class MenuItemsModel { 

public int image; 
public String itemName; 
public String itemCost; 

public MenuItemsModel(int image, String itemName, String itemCost) { 
    this.image = image; 
    this.itemName = itemName; 
    this.itemCost = itemCost; 
} 
public int getImage() { 
    return image; 
} 

public void setImage(int image) { 
    this.image = image; 
} 

public String getItemName() { 
    return itemName; 
} 

public void setItemName(String itemName) { 
    this.itemName = itemName; 
} 

public String getItemCost() { 
    return itemCost; 
} 

public void setItemCost(String itemCost) { 
    this.itemCost = itemCost; 
} 
} 

モデルクラスのためである私のRecyclerAdapterクラスは、ここで**

 public class MenusRecyclearView extends 
     RecyclerView.Adapter<MenusRecyclearView.RecyclerViewHolder> { 

Context context; 
List<MenuItemsModel> menuItemsModel; 

public MenusRecyclearView(Context context, List<MenuItemsModel> menuItemsModel) { 
    this.context = context; 
    this.menuItemsModel = menuItemsModel; 
} 

@Override 
public RecyclerViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.menu_items_list, parent, false); 
    return new RecyclerViewHolder(view, context, menuItemsModel); 
} 

@Override 
public void onBindViewHolder(RecyclerViewHolder holder, int position) { 
    holder.imageView.setImageResource(menuItemsModel.get(position).getImage()); 
    holder.ItemName.setText(menuItemsModel.get(position).getItemName()); 
    holder.ItemCost.setText(menuItemsModel.get(position).getItemCost()); 

    //Picasso.with(context).load(menuItemsModel.get(position).getImage()).into(holder.imageView); 
} 

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

public class RecyclerViewHolder extends RecyclerView.ViewHolder implements 
View.OnClickListener { 
    public ImageView imageView; 
    public TextView ItemName, ItemCost; 
    Context ctx; 
    List<MenuItemsModel> menuItemsModels; 

    public RecyclerViewHolder(View view, Context ctx, List<MenuItemsModel> menuItemsModels) { 

     super(view); 
     this.ctx = ctx; 
     this.menuItemsModels = menuItemsModels; 
     view.setOnClickListener(this); 
     imageView = view.findViewById(R.id.biriyani_menu_item); 
     ItemName = view.findViewById(R.id.item_name); 
     ItemCost = view.findViewById(R.id.item_cost); 
    } 

    @Override 
    public void onClick(View v) { 
     int position = getAdapterPosition(); 
     MenuItemsModel model = this.menuItemsModels.get(position); 
     Intent i = new Intent(this.ctx, CategoryDescription.class); 
     i.putExtra("ImageId", model.getImage()); 
     i.putExtra("ItemName", model.getItemName()); 
     i.putExtra("ItemCost", model.getItemCost()); 
     this.ctx.startActivity(i); 
    } 
} 
} 

である私のMainActivityクラスは**

です
public class BiryanisActivity extends AppCompatActivity implements 
    View.OnClickListener, NetworkOperationListener{ 

RecyclerView recyclerView; 
MenusRecyclearView menusRecyclearView; 
RecyclerView.LayoutManager layoutManager; 
List<MenuItemsModel> menuItemsModel; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.biriyanis_activity); 

    getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
    getSupportActionBar().setDisplayShowHomeEnabled(true); 

    menuItemsModel = new ArrayList<>(); 
    recyclerView = (RecyclerView) findViewById(R.id.recyclearview_menu); 
    layoutManager = new LinearLayoutManager(this); 
    recyclerView.setLayoutManager(layoutManager); 
    recyclerView.setHasFixedSize(true); 
    recyclerView.setItemAnimator(new DefaultItemAnimator()); 
    menusRecyclearView = new MenusRecyclearView(this, menuItemsModel); 
    recyclerView.setAdapter(menusRecyclearView); 

    HttpAdapter.getMenuItemsList(this,"MenuItemsList"); 
    //prepareData(); 
    } 

    /* public void prepareData() { 
    MenuItemsModel data = new MenuItemsModel(R.drawable.item5, "Chicken Dhum 
    Biriyani", "Rs.240"); 
    menuItemsModel.add(data); 

    MenuItemsModel data1 = new MenuItemsModel(R.drawable.item2, "Chicken 
    Chilli Biriyani", "Rs.260"); 
    menuItemsModel.add(data1); 

    MenuItemsModel data2 = new MenuItemsModel(R.drawable.item3, "Chicken 
    Tandhuri Biriyani", "Rs.280"); 
    menuItemsModel.add(data2); 

    MenuItemsModel data3 = new MenuItemsModel(R.drawable.item4, "Chicken 
    Moghulai Biriyani", "Rs.230"); 
    menuItemsModel.add(data3); 

    MenuItemsModel data4 = new MenuItemsModel(R.drawable.item1, "Chicken 
    Special Biriyani", "Rs.220"); 
    menuItemsModel.add(data4); 

    MenuItemsModel data5 = new MenuItemsModel(R.drawable.item1, "Chicken 
    Mandi Biriyani", "Rs.210"); 
    menuItemsModel.add(data5); 
    }*/ 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
     case android.R.id.home: 
      onBackPressed(); 
      return true; 
    } 
    return false; 
} 

@Override 
public void onClick(View view) { 

} 

@Override 
public void operationCompleted(NetworkResponse response) { 
    if (response.getStatusCode() == 200) { 

     if (response.getTag().equals("MenuItemsList")) { 

      try { 
       JSONObject jsonObjects = new JSONObject(response.getResponseString()); 
       if (jsonObjects.getString("Data").equals("null")) { 
        Toast.makeText(this, "No Data Found", Toast.LENGTH_SHORT).show(); 
        return; 
       } 
       JSONArray jsonArray = jsonObjects.getJSONArray("Data"); 
         for (int j=0; j<jsonArray.length(); j++) { 
          JSONObject jsonObject = jsonArray.getJSONObject(j); 
          MenuItemsModel data = new Gson().fromJson(jsonObject.toString(),MenuItemsModel.class); 
          //Picasso.with(this).load(data.getImage()).into(); 
          Picasso.with(this).load(data.getImage()).into(holder.imageView); 
          /* int image = data.getImage(); 
          String name = data.getItemName(); 
          String cost = data.getItemCost(); 
          //picaso(image, imageView);*/ 
          menuItemsModel.add(data); 
         } 
         MenusRecyclearView menusRecyclearView = new MenusRecyclearView(this,menuItemsModel); 
         recyclerView.setAdapter(menusRecyclearView); 

      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 
     } 

    } else { 
     Toast.makeText(this, "Failed to Connect Server, Please try again later", Toast.LENGTH_SHORT).show(); 
    } 
} 

public void picaso(String path, ImageView imageView) { 
    if (!path.equals("")) { 
     Picasso.with(this).load(path).into(imageView); 
    } 
} 
} 

答えて

0

さて、あなたは正しい道を歩いています。あなたのURLになるために

//Picasso.with(context).load(menuItemsModel.get(position).getImage()).into(holder.imageView); 

そして、.getImage()ニーズ:あなたは、この行のコメントを解除する必要があります。つまり、画像URLをMenuItemsModelの内部に保存する必要があります。今度はimageintで、タイプはStringであるため、URLを渡すことができます。私は行のコメントを外した場合

https://stackoverflow.com/a/41157030/5457878

+0

'Picasso.with(この).LOAD(data.getImage())(holder.imageView)へ。;':

また、ここでこの答えを見ますピカソで画像をロードするにはどうすればいいですか? ちょうど私が.into()に渡す必要があるもの。ピカソの読み込みで?私の場合の画像の場所の宛先は何ですか? – Malli

+0

holder.imageViewは 'RecyclerViewHolder'で定義した画像で、' R.id.biriyani_menu_item'です。しかし、私はあなたがそれを変更する必要があると思います。 –

関連する問題