使用 Picasso 加载本地图片
Load local images using Picasso
我正在学习使用 Picasso 在 GridView 中加载图像。我试图加载本地可绘制图像,但 gridview 显示空白。我在其他 post 中检查了解决方案,但没有找到任何令人满意的答案。仅找到 this 无效的解决方案。任何加载本地图像的建议将不胜感激。
Adapter to load images
public class ImageAdapter extends BaseAdapter {
private Context mContext;
// Keep all Images in array
public Integer[] mThumbIds = {};
public ImageAdapter(Context c){
mContext = c;
}
@Override
public int getCount() {
return mThumbIds.length;
}
@Override
public Object getItem(int position) {
return mThumbIds[position];
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView = new ImageView(mContext);
imageView.setImageResource(mThumbIds[position]);
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setLayoutParams(new GridView.LayoutParams(100, 100));
Picasso.with(mContext).load(mThumbIds[position]).into(imageView);
return imageView;
}
}
Fragment having gridview
public class GridFrag extends Fragment{
public Integer[] mThumbIds = { R.drawable.brazil, R.drawable.colosseum,
R.drawable.eiffeltower, R.drawable.greatwall, R.drawable.pyramid,
R.drawable.statue, R.drawable.tajmahal };
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
//Inflate the layout for this fragment
View v = LayoutInflater.from(getActivity()).inflate(R.layout.frag_grid, null);
GridView gridview = (GridView) v.findViewById(R.id.gridview);
gridview.setAdapter(new ImageAdapter(this.getActivity()));
return v;
}
}
您应该将数组移动到 ImageAdapter
。您的 mThumbIds
数组在适配器中是 空的 。
使用以下代码更改您的代码:
public class ImageAdapter extends BaseAdapter {
private Context mContext;
// Keep all Images in array
public Integer[] mThumbIds = { R.drawable.brazil, R.drawable.colosseum,
R.drawable.eiffeltower, R.drawable.greatwall, R.drawable.pyramid,
R.drawable.statue, R.drawable.tajmahal };
public ImageAdapter(Context c){
mContext = c;
}
@Override
public int getCount() {
return mThumbIds.length;
}
@Override
public Object getItem(int position) {
return mThumbIds[position];
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView = new ImageView(mContext);
imageView.setImageResource(mThumbIds[position]);
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setLayoutParams(new GridView.LayoutParams(100, 100));
Picasso.with(mContext).load(mThumbIds[position]).into(imageView);
return imageView;
}
}
简单
Uri uri=Uri.fromFile(new File("YOUR IMAGE FILE PATH"));
Picasso.with(mContext).load(uri).placeholder(R.drawable.ic_launcher).error(R.drawable.landscape_1).into("YOUR IMAGE VIEW");
在 picasso 加载实际图像时用于显示示例图像的占位符。
错误:如果图像加载失败,应显示此图像
我正在学习使用 Picasso 在 GridView 中加载图像。我试图加载本地可绘制图像,但 gridview 显示空白。我在其他 post 中检查了解决方案,但没有找到任何令人满意的答案。仅找到 this 无效的解决方案。任何加载本地图像的建议将不胜感激。
Adapter to load images
public class ImageAdapter extends BaseAdapter {
private Context mContext;
// Keep all Images in array
public Integer[] mThumbIds = {};
public ImageAdapter(Context c){
mContext = c;
}
@Override
public int getCount() {
return mThumbIds.length;
}
@Override
public Object getItem(int position) {
return mThumbIds[position];
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView = new ImageView(mContext);
imageView.setImageResource(mThumbIds[position]);
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setLayoutParams(new GridView.LayoutParams(100, 100));
Picasso.with(mContext).load(mThumbIds[position]).into(imageView);
return imageView;
}
}
Fragment having gridview
public class GridFrag extends Fragment{
public Integer[] mThumbIds = { R.drawable.brazil, R.drawable.colosseum,
R.drawable.eiffeltower, R.drawable.greatwall, R.drawable.pyramid,
R.drawable.statue, R.drawable.tajmahal };
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
//Inflate the layout for this fragment
View v = LayoutInflater.from(getActivity()).inflate(R.layout.frag_grid, null);
GridView gridview = (GridView) v.findViewById(R.id.gridview);
gridview.setAdapter(new ImageAdapter(this.getActivity()));
return v;
}
}
您应该将数组移动到 ImageAdapter
。您的 mThumbIds
数组在适配器中是 空的 。
使用以下代码更改您的代码:
public class ImageAdapter extends BaseAdapter {
private Context mContext;
// Keep all Images in array
public Integer[] mThumbIds = { R.drawable.brazil, R.drawable.colosseum,
R.drawable.eiffeltower, R.drawable.greatwall, R.drawable.pyramid,
R.drawable.statue, R.drawable.tajmahal };
public ImageAdapter(Context c){
mContext = c;
}
@Override
public int getCount() {
return mThumbIds.length;
}
@Override
public Object getItem(int position) {
return mThumbIds[position];
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView = new ImageView(mContext);
imageView.setImageResource(mThumbIds[position]);
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setLayoutParams(new GridView.LayoutParams(100, 100));
Picasso.with(mContext).load(mThumbIds[position]).into(imageView);
return imageView;
}
}
简单
Uri uri=Uri.fromFile(new File("YOUR IMAGE FILE PATH"));
Picasso.with(mContext).load(uri).placeholder(R.drawable.ic_launcher).error(R.drawable.landscape_1).into("YOUR IMAGE VIEW");
在 picasso 加载实际图像时用于显示示例图像的占位符。
错误:如果图像加载失败,应显示此图像