将图像 url 设置为 listadapter 以使用 Picasso 显示图像
Posted
技术标签:
【中文标题】将图像 url 设置为 listadapter 以使用 Picasso 显示图像【英文标题】:Set image url into listadapter to show images using Picasso 【发布时间】:2019-09-15 12:58:51 【问题描述】:我有一个简单的列表适配器,我想在其中显示带有一些文本信息的食物图像。到目前为止,我知道我可以使用 AQuery 或 Picasso 之类的库来完成它,但是在阅读了很多教程后我无法弄清楚如何实现它。
我在我的依赖项中添加了毕加索库。假设我的图像视图 ID 是 ImgViewFood
活动
JSONArray jsonArr = jsonObj.getJSONArray("foodnames");
for (int i = 0; i < jsonArr.length(); i++)
HashMap<String, String> food = new HashMap<>();
JSONObject jsonObj = jsonArr.getJSONObject(i);
String name = jsonObj.getString("food_name");
String url = jsonObj.getString("img_url");
food.put("foodname", name);
foodList.add(food);
ListAdapter adapter = new SimpleAdapter(
FoodListActivity.this, foodList,
R.layout.list_food_detail, new String[]"foodname", new int[]R.id.view_food_name);
listviewFood.setAdapter(adapter);
【问题讨论】:
How to use Picasso with listview? 查看毕加索官方网站。 square.github.io/picasso 我可以使用 picasso 显示图像,这不是问题,问题是如何使用 listadapter 实现它。 需要完整的代码来看看。你的 ListAdapter 类在哪里? Atlast 想通了。解决了。我正在发布我的解决方案。 【参考方案1】:完整的解决方案
列表适配器
JSONArray jsonArr = jsonObj.getJSONArray("foodnames");
for (int i = 0; i < jsonArr.length(); i++)
HashMap<String, String> food = new HashMap<>();
JSONObject jsonObj1 = jsonArr.getJSONObject(i);
String url = "www.nomadicbong.com/images/";
food.put("foodname", jsonObj1.getString("foodname"));
food.put("foodid", jsonObj1.getString("foodid"));
food.put("imgname",url.concat(jsonObj1.getString("imagename")));
foodList.add(food);
ListAdapter adapter = new CustomImageAdapter(
FoodListActivity.this, foodList,
R.layout.list_food_detail, new String[]"foodid", "foodname", new int[]R.id.view_food_id,R.id.view_food_name);
listviewFood.setAdapter(adapter);
CustomImageAdapter
import com.squareup.picasso.*;
/**
* Created by nomadicbong on 4/25/2019.
*/
public class CustomImageAdapter extends SimpleAdapter
public CustomImageAdapter(Context context, List<? extends Map<String, ?>> foodList, int resource, String[] from, int[] to)
super(context, foodList, resource, from, to);
public View getView(int position, View convertView, ViewGroup parent)
View v = super.getView(position, convertView, parent);
ImageView imgvw = (ImageView) v.getTag();
if(imgvw == null)
imgvw = (ImageView) v.findViewById(R.id.imgFood1);
v.setTag(imgvw);
// get the url from the data in the `Map`
String url = ((Map)getItem(position)).get("imgname").toString();
Picasso.with(v.getContext()).load(url).into(imgvw);
return v;
【讨论】:
如果这是答案,您可以单击它左侧的勾号/复选标记,以将问题标记为已解决。它将变为绿色以确认已解决状态。以上是关于将图像 url 设置为 listadapter 以使用 Picasso 显示图像的主要内容,如果未能解决你的问题,请参考以下文章
如何将自定义 ListAdapter 设置为 appwidget 中的列表视图?
设置 ListAdapter 时 Android Java 应用程序崩溃