使用毕加索库

时间:2015-07-19 10:46:02

标签: android arrays picasso

嗨我仍然是新的Android 我在网格视图中显示一些虚拟图像,我有一个使用视图持有者的自定义适配器,它将一个字符串数组和类型数组放入一个数组列表并在gridview中显示它一切正常, 然后我意识到我想要使用的图像太大而且发现了毕加索库,看起来非常强大且易于使用但我不确定要传递给load方法的内容因为它需要一个类型数组而我的类型数组是一个数组列表我确定这是一个简单的修复但我无法看到它, 我的图片在应用中

这是我的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);
            }
    }

这是我的适配器获取视图方法

@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])

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

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

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

更改

.load(imageIds[position])

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

<强>更新

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

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