在 BaseAdapter 中变得奇怪
Got strange in BaseAdapter
它应该是带有 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
如此简单...
我猜 BaseAdapter 不能和 HashMap 一起工作
改变了这个
public Map<Integer, String> partImages;
至此
public ArrayList partImages;
它应该是带有 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
如此简单...
我猜 BaseAdapter 不能和 HashMap 一起工作
改变了这个
public Map<Integer, String> partImages;
至此
public ArrayList partImages;