android -how将从毕加索加载的图像绑定到回收站视图

时间:2017-10-24 10:29:08

标签: android picasso

我有MenuItemsModel(model)类中的数据列表以及图像url和从API获取的两个字符串。如何使用Picasso加载图像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);
    }
}
}

**这是我的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 个答案:

没有答案