android-如何将从毕加索加载的图像绑定到recycler视图
我有MenuItemsModel(model)类中的数据列表,还有图像url和从API获取的两个字符串。如何使用毕加索加载图像url,以及如何将加载的图像绑定到recyclerview 这是我的代码 模型类代码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
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传递给它
另见