android-如何将从毕加索加载的图像绑定到recycler视图

android-如何将从毕加索加载的图像绑定到recycler视图,android,picasso,Android,Picasso,我有MenuItemsModel(model)类中的数据列表,还有图像url和从API获取的两个字符串。如何使用毕加索加载图像url,以及如何将加载的图像绑定到recyclerview 这是我的代码 模型类代码 public class MenuItemsModel { public int image; public String itemName; public String itemCost; public MenuItemsModel(int image, String item

我有MenuItemsModel(model)类中的数据列表,还有图像url和从API获取的两个字符串。如何使用毕加索加载图像url,以及如何将加载的图像绑定到recyclerview

这是我的代码

模型类代码

  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);
    }
}
}
公共类MenusRecyclearView扩展
RecyclerView.适配器{
语境;
列表菜单项模型;
公共菜单RecyclearView(上下文、列表菜单项模型){
this.context=上下文;
this.menuItemsModel=menuItemsModel;
}
@凌驾
public RecycleServiceWholder onCreateViewHolder(视图组父级,int-viewType){
View=LayoutFlater.from(parent.getContext()).flate(R.layout.menu\u items\u list,parent,false);
返回新的RecycleServiceWholder(视图、上下文、菜单项模型);
}
@凌驾
BindViewHolder上的公共无效(RecyclerViewHolder,内部位置){
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())到(holder.imageView)中;
}
@凌驾
public int getItemCount(){
返回menuItemsModel.size();
}
公共类RecyclerViewWholder扩展了RecyclerView.ViewHolder实现
View.OnClickListener{
公共影像视图;
公共文本查看项目名称、项目成本;
上下文ctx;
列出菜单项模型;
公共RecycleServiceWholder(视图、上下文ctx、列表菜单项模型){
超级(视图);
this.ctx=ctx;
this.menuItemsModels=menuItemsModels;
view.setOnClickListener(这个);
imageView=view.findViewById(R.id.biriyani菜单项);
ItemName=view.findviewbyd(R.id.item\u name);
ItemCost=view.findViewById(R.id.item\u成本);
}
@凌驾
公共void onClick(视图v){
int position=getAdapterPosition();
MenuItemsModel=this.menuItemsModels.get(位置);
意图i=新意图(this.ctx,CategoryDescription.class);
i、 putExtra(“ImageId”,model.getImage());
i、 putExtra(“ItemName”,model.getItemName());
i、 putExtra(“ItemCost”,model.getItemCost());
本.ctx.startActivity(i);
}
}
}
**这是我的主要活动课**

   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);
    }
}
}
public类BiryanisActivity扩展了AppCompativity实现
View.OnClickListener,NetworkOperationListener{
回收视图回收视图;
MenusRecyclearView MenusRecyclearView;
RecyclerView.LayoutManager LayoutManager;
列表菜单项模型;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.biriyanis_活动);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
menuItemsModel=新建ArrayList();
recyclerView=(recyclerView)findViewById(R.id.recyclearview_菜单);
layoutManager=新的LinearLayoutManager(此);
recyclerView.setLayoutManager(layoutManager);
recyclerView.setHasFixedSize(true);
setItemAnimator(新的DefaultItemAnimator());
menusRecyclearView=新建menusRecyclearView(此为menuItemsModel);
setAdapter(menusRecyclearView);
HttpAdapter.getMenuItemsList(此为“MenuItemsList”);
//prepareData();
}
/*公共无效准备数据(){
MenuItemsModel数据=新的MenuItemsModel(R.drawable.item5,“鸡肉Dhum
比里亚尼“,”卢比240“;
menuItemsModel.add(数据);
MenuItemsModel data1=新的MenuItemsModel(R.drawable.item2,“鸡肉
比里亚尼辣椒“,”Rs.260“;
menuItemsModel.add(数据1);
MenuItemsModel data2=新的MenuItemsModel(R.drawable.item3,“鸡肉
坦胡里·比里亚尼,“280卢比”;
menuItemsModel.add(数据2);
MenuItemsModel data3=新的MenuItemsModel(R.drawable.item4,“鸡肉
Moghulai Biriyani,“230卢比”;
menuItemsModel.add(数据3);
MenuItemsModel data4=新的MenuItemsModel(R.drawable.item1,“鸡肉
特别比里亚尼“,”卢比220“;
menuItemsModel.add(数据4);
MenuItemsModel data5=新的MenuItemsModel(R.drawable.item1,“鸡肉
Mandi Biriyani,“210卢比”;
menuItemsModel.add(数据5);
}*/
@凌驾
公共布尔值onOptionsItemSelected(菜单项项){
开关(item.getItemId()){
案例android.R.id.home:
onBackPressed();
返回true;
}
返回false;
}
@凌驾
公共void onClick(视图){
}
@凌驾
公共无效操作已完成(网络响应){
if(response.getStatusCode()==200){
if(response.getTag().equals(“MenuItemsList”)){
试一试{
JSONObject JSONObject=newJSONObject(response.getResponseString());
if(jsonObjects.getString(“数据”).equals(“null”)){
Toast.makeText(这是“找不到数据”,Toast.LENGTH_SHORT).show();
返回;
}
JSONArray JSONArray=jsonObjects.getJSONArray(“数据”);

对于(int j=0;j那么,您的思路是正确的。您需要取消对此行的注释:

//Picasso.with(context).load(menuItemsModel.get(position).getImage()).into(holder.imageView);
而且,
.getImage()
需要成为您的URL。这意味着,您应该将图像URL存储在
菜单项模型
中。现在,您的
图像
是一个
int
,并且应该是一种
字符串
类型,以便您可以将URL传递给它

在这里也可以看到这个答案:


好吧,你的思路是对的。你需要取消这一行的注释:

//Picasso.with(context).load(menuItemsModel.get(position).getImage()).into(holder.imageView);
而且,
.getImage()
需要成为您的URL。这意味着,您应该将图像URL存储在
菜单项模型
中。现在,您的
图像
是一个
int
,并且应该是一种
字符串
类型,以便您可以将URL传递给它

另见