gpt4 book ai didi

android - 使用 picasso 库从数组列表加载图像

转载 作者:行者123 更新时间:2023-11-29 01:30:27 25 4
gpt4 key购买 nike

嗨,我对 Android 还是个新手我在 GridView 中显示了一些虚拟图像,我有一个使用 View 持有者的自定义适配器,它将字符串数组和类型数组放入数组列表中并将其显示在 GridView 中,这一切都很好,然后我意识到我想使用的图像太大了,发现了 picasso 库,它看起来非常强大且易于使用,但我不确定要将什么传递给加载方法,因为它需要一个类型数组,而我的类型数组在一个数组中列表我确定这是一个简单的修复,但我看不到它,我的图片在应用程序中

这是我的 imageId 和 viewholder 类

 class imageIds
{
int imageId;
String imageNames;

imageIds(int imageId, String imageNames)
{
this.imageId = imageId;
this.imageNames = imageNames;
}
}
class ViewHolder
{
ImageView myView;
ViewHolder(View view){
myView = (ImageView) view.findViewById(R.id.imageView);
}
}

这是我的适配器的开始,我在其中声明和初始化我的数组

 class myAdapter extends BaseAdapter{
ArrayList<imageIds> list;
Context context;
myAdapter(Context context)
{
this.context = context;
list = new ArrayList<imageIds>();
Resources res = context.getResources();
String[] tempWallpaperNames = res.getStringArray(R.array.wallpaper_list);

int[] tempWallPaperImages = {R.drawable.ic_home,R.drawable.ic_photos,R.drawable.ic_home,
R.drawable.ic_photos,R.drawable.ic_photos,R.drawable.ic_photos,R.drawable.ic_home,
R.drawable.ic_home,R.drawable.ic_photos,R.drawable.ic_home};
for (int i = 0; i<10;i++)
{
imageIds tempWallpaper = new imageIds(tempWallPaperImages[i],tempWallpaperNames[i]);
list.add(tempWallpaper);
}
}

这是我的适配器获取 View 方法

@Override
public View getView(int position, View convertView, ViewGroup parent) {

View row = convertView;
ViewHolder holder = null;
if (row == null){

LayoutInflater inflater = (LayoutInflater)
context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
row = inflater.inflate(R.layout.grid_images,parent,false);
holder = new ViewHolder(row);
row.setTag(holder);
}
else{
holder = (ViewHolder) row.getTag();
}

imageIds wallPapers = list.get(position);
holder.myView.setImageResource(wallPapers.imageId);

holder.myView.setTag(wallPapers);

Picasso.with(getActivity())
.load(imageIds[position])
.placeholder(R.drawable.ic_photos)
.error(R.drawable.ic_drawer)
.noFade().resize(120,120)
.centerCrop().into(holder.myView);
return holder.myView;


return row;
}
}

android studio 告诉我这里需要一个表达式

.load(imageIds[position])

谢谢你的帮助

最佳答案

load 需要实际的图像文件名或 resourceId。

我假设 imageNames 包含位置/文件名,或者您可以使用 imageId

改变

.load(imageIds[position])

.load(imageIds[position].imageNames) or .load(imageIds[position].imageId)

更新

您已经在使用 list.get(position),因此您只返回 wallPapers 变量中的一项。

所以代码应该是.load(wallPapers.imageId)

关于android - 使用 picasso 库从数组列表加载图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31500327/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com