Java 毕加索从手机加载图像时出错
我有一个GridView,其中我放了一些用毕加索从手机上采集的图像,目前我只针对KitKat。我将Uri的ArrayList传递给适配器,一切正常。但我希望在活动被销毁后图像也留在这里,所以我在片段中使用:Java 毕加索从手机加载图像时出错,java,android,android-fragments,android-gridview,picasso,Java,Android,Android Fragments,Android Gridview,Picasso,我有一个GridView,其中我放了一些用毕加索从手机上采集的图像,目前我只针对KitKat。我将Uri的ArrayList传递给适配器,一切正常。但我希望在活动被销毁后图像也留在这里,所以我在片段中使用: @Override public void onPause() { imagesUriSet = new HashSet<String>(); for(Uri i : imagesUri) imagesUriSet.add(i.toString()
@Override
public void onPause() {
imagesUriSet = new HashSet<String>();
for(Uri i : imagesUri)
imagesUriSet.add(i.toString());
mSharedPreferences.edit().putStringSet("IMAGES",imagesUriSet).commit();
super.onPause();
}
如果启动我的应用程序,我在SharedReferences中保存的图像将不会显示,而我会看到错误图像。但是如果我再次添加相同的图像,那么我也可以看到第一个。
我不知道发生了什么事。有什么问题吗?您是否尝试进行日志记录。我会查看SharedReferences中写入和读取的内容,以查看它是否实际写入/读取了正确的值? 并尝试执行Log.I,查看在执行Uri URL=Uri data.getposition时是否读取了正确的URL;在getView方法中 我的最佳猜测是,它无法从SharedReferences设置/获取正确的数据 我目前也在使用毕加索在ListView中加载大量Facebook/Twitter/LinkedIn个人资料图片,虽然我没有将URL地址保存在SharedReferences中,但我将它们与其他信息一起保存在数据库中。
我一点问题都没有。但是为什么当我再次添加相同的图像时,我可以同时看到这两个图像?我试着使用日志,一切都是正确的。。。。
Set<String> set = mSharedPreferences.getStringSet("IMAGES", null);
if(set != null)
for(String uriString : set) {
imagesUri.add(Uri.parse(uriString));
Log.i("Immagine: ", Uri.parse(uriString) + "");
}
gridViewAdapter.notifyDataSetChanged();
public class GridViewAdapter extends ArrayAdapter {
private final Context context;
private ArrayList data = new ArrayList();
public GridViewAdapter(Context context, int layoutResourceId,
ArrayList data) {
super(context, layoutResourceId, data);
this.context = context;
this.data = data;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
SquaredImageView view = (SquaredImageView) convertView;
if (view == null) {
view = new SquaredImageView(context);
view.setScaleType(ImageView.ScaleType.CENTER_CROP);
}
Uri url = (Uri) data.get(position);
Picasso.with(context) //
.load(url) //
.fit() //
.error(R.drawable.error)
.into(view);
return view;
}
}