Android 更改gridVIew';将imageView设置在适配器外部
我怎么做?这是GridView适配器中的方法Android 更改gridVIew';将imageView设置在适配器外部,android,gridview,adapter,Android,Gridview,Adapter,我怎么做?这是GridView适配器中的方法 public static void changeView(Bitmap bmp, int pos){ GridView gridView = new GridView(mContext); ImageView view = (ImageView) gridView.getChildAt(pos); if (view == null) Log.e("ImageAdapter Error", "ImageV
public static void changeView(Bitmap bmp, int pos){
GridView gridView = new GridView(mContext);
ImageView view = (ImageView) gridView.getChildAt(pos);
if (view == null)
Log.e("ImageAdapter Error", "ImageView is null");
}
这是一个getView方法
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
if (convertView == null) {
// imageView = Inflater.inflate(R.layout.image_layout, null);
imageView = new ImageView(mContext);
if (DefinedValues.width/3 < DefinedValues.height/4)
imageView.setLayoutParams(new GridView.LayoutParams
(DefinedValues.height/4, DefinedValues.height/4));
else
imageView.setLayoutParams(new GridView.LayoutParams
(DefinedValues.width/3-5, DefinedValues.width/3-5));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(8, 8, 8, 8);
} else {
imageView = (ImageView) convertView;
}
imageView.setImageResource(R.drawable.test3);
return imageView;
}
在适配器中创建一个集合以保存需要应用的图像。当您需要更改特定
getView
行的图像时,请更改相应集合中的图像:
private Bitmap[] imgCollection;
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
if (convertView == null) {
// imageView = Inflater.inflate(R.layout.image_layout, null);
imageView = new ImageView(mContext);
if (DefinedValues.width/3 < DefinedValues.height/4)
imageView.setLayoutParams(new GridView.LayoutParams
(DefinedValues.height/4, DefinedValues.height/4));
else
imageView.setLayoutParams(new GridView.LayoutParams
(DefinedValues.width/3-5, DefinedValues.width/3-5));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(8, 8, 8, 8);
} else {
imageView = (ImageView) convertView;
}
imageView.setImageBitmap(imgCollection[position]); // <-- changed
return imageView;
}
public void changeImageBitmap (Bitmap bmp, int pos) {
imgCollection[pos] = bmp;
notifyDataSetChanged(); // refresh the listview
}
在静态类中设置上下文对象mContext可以吗
不,绝对不是。根本不需要这样做。如果上下文是静态的,它可以阻止您的活动或其中的任何内容被垃圾收集。你的应用程序最终可能会因资源不足而崩溃。你在哪里调用changeView()方法?你能告诉我你想实现什么吗,而且你没有在你发布的代码中将适配器设置为gridView。我有一个gridView片段,这个适配器连接到gridView。你的代码有问题,什么是图像类?您的适配器是什么关系?你是否正在创建空的gridview并试图在特定位置获取项目?罗马人,请提供更多关于你全球目标的信息。我相信你对这个问题的处理方法是错误的,但只有你进一步描述,我才能确定。谢谢!以前使用过it方法,但认为这不是正确的方法。
DefinedValues.thumbnail.put("activity", DefinedValues.images);
DefinedValues.thumbnail.put("type", "thumbnail");
DefinedValues.thumbnail.put("name", this.name);
DefinedValues.thumbnail.put("width", DefinedValues.width + "");
//Creates request to server
String req = Json.stringToJson(DefinedValues.thumbnail);
Log.d(TAG, "downloadImage() called. Request to server: " + req);
DefinedValues.thumbnail.clear();
thumb = new ImageDownloader();
thumb.setListener(MyImage.this);
thumb.execute(req);
Log.d(TAG, "downloaded thumbnail nr." + imageCount);
}
public void returnImage(Bitmap res) {
Log.d(TAG, "Setting up thumbnail...");
this.setThumbnail(res);
}
private Bitmap[] imgCollection;
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
if (convertView == null) {
// imageView = Inflater.inflate(R.layout.image_layout, null);
imageView = new ImageView(mContext);
if (DefinedValues.width/3 < DefinedValues.height/4)
imageView.setLayoutParams(new GridView.LayoutParams
(DefinedValues.height/4, DefinedValues.height/4));
else
imageView.setLayoutParams(new GridView.LayoutParams
(DefinedValues.width/3-5, DefinedValues.width/3-5));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(8, 8, 8, 8);
} else {
imageView = (ImageView) convertView;
}
imageView.setImageBitmap(imgCollection[position]); // <-- changed
return imageView;
}
public void changeImageBitmap (Bitmap bmp, int pos) {
imgCollection[pos] = bmp;
notifyDataSetChanged(); // refresh the listview
}
if (imgCollection[position] == null) {
imageView.setImageResource(R.drawable.test3);
} else {
imageView.setImageBitmap(imgCollection[position]); // <-- changed
}