应该是带有GridView和图像的应用程序的简单部分,当按钮单击进入相机,捕获新照片并将其添加到GridView
我在这里申请ImageAdapter extends BaseAdapter
partItem = getPart(position);
StaticGridView gridView = (StaticGridView) view.findViewById(R.id.ImagesGrid);
imageAdapter = new ImageAdapter(mContext, partItem.P_Code, partItem.Images);
gridView.setAdapter(imageAdapter);
ImageAdapter.java
public class ImageAdapter extends BaseAdapter {
private Context mContext;
public Map<Integer, String> partImages;
public String P_Code;
private static final String TAG = "ImageAdapter";
public ImageAdapter(Context c, String _P_Code, Map<Integer, String> _partImages) {
this.mContext = c;
this.partImages = _partImages;
this.P_Code = _P_Code;
}
public void changeModelList(Map<Integer, String> _partImages) {
partImages = _partImages;
notifyDataSetChanged();
}
public int getCount() {
return partImages.size();
}
@Override
public Object getItem(int position) {
return partImages.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
if (convertView == null) {
imageView = new ImageView(mContext);
imageView.setLayoutParams(new GridView.LayoutParams(GridView.LayoutParams.MATCH_PARENT, GridView.LayoutParams.MATCH_PARENT));
imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
Picasso.with(mContext)
.load(API.ApiUrlBase + "/imagepreview/android" + getItem(position))
.placeholder(android.R.drawable.ic_menu_gallery)
.into(imageView);
Log.d(TAG, position + ":" + String.valueOf(getItem(position)));
} else {
imageView = (ImageView) convertView;
}
return imageView;
}
}
进入日志
: 1:/data/44452.P1090185.JPG
: 2:/data/44452.P1090186.JPG
: 3:/data/44452.P1090187.JPG
: 0:/data/44452.P1090184.JPG
: 0:/data/44452.P1090184.JPG
毕加索可以,但是当我尝试添加新图像时
partItem.Images.put(imageAdapter.getCount(), mCurrentPhotoPath);
// imageAdapter.notifyDataSetChanged();
imageAdapter.changeModelList(partItem.Images);
进入日志
{
4=file:/storage/sdcard/Pictures/JPEG_20160306_213748_1027396172.jpg,
1=/data/44452.P1090185.JPG,
0=/data/44452.P1090184.JPG,
3=/data/44452.P1090187.JPG,
2=/data/44452.P1090186.JPG
}
: 0:/data/44452.P1090184.JPG
并且第一个图像出现在GridView上,但没有新文件。 有人有想法吗? GridView screenshot
答案 0 :(得分:0)
这么简单......
我认为BaseAdapter无法使用HashMap
改变了这个
public Map<Integer, String> partImages;
到这个
public ArrayList partImages;