所以问题是 1.我们正在使用listView进行聊天应用 2。每次发送聊天或rec时,我们都会更新arrayList并更新适配器并使用notifydatasetAdaper()来刷新列表视图。 3.因此,如果我们在聊天中发送10张图像,然后发送第11个聊天消息(比如文字chtat)然后调用notifydatasetadapter(),在这种情况下,所有10个图像都是刷新的。 所以我需要停止这种令人耳目一新的图像。 5.必须刷新ListView而不刷新图像
所以任何想法我怎么能实现这个...或者可能是在错误的道路上请告诉我正确的做法..... !!!
我也试过使用picaso但是这个库与okhttp库有冲突.... !!!
这也是我展示图片的方式
public class ImageFromSd extends AsyncTask<Object, Bitmap, Bitmap> {
ImageView im;
// int targetWidth = 200;
// int targetHeight = 200;
@Override
protected Bitmap doInBackground(Object... params) {
// TODO Auto-generated method stub
Bitmap bitmap = null;
try {
im = (ImageView) params[0];
String path = (String) im.getTag();
Log.d("ankit", "image path :::::" + path);
bitmap = BitmapFactory.decodeFile(path);
// bitmap.compress(CompressFormat.JPEG, 100, new
// FileOutputStream(
// path));
//
// bitmap = Bitmap.createScaledBitmap(bitmap, targetWidth,
// targetHeight, false);
}
// catch (FileNotFoundException e) {
// e.printStackTrace();
// bitmap = null;
// }
catch (OutOfMemoryError e) {
e.printStackTrace();
bitmap = null;
} catch (NullPointerException e) {
e.printStackTrace();
bitmap = null;
} catch (Exception e) {
e.printStackTrace();
bitmap = null;
}
return bitmap;
}
@Override
protected void onPostExecute(Bitmap result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
if (result != null) {
im.setScaleType(ScaleType.FIT_CENTER);
im.setImageBitmap(result);
}
}
}
and then calling it like this
im.setTag(items.get(i).getTextChat());
new ImageFromSd().execute(im);
答案 0 :(得分:0)
首先,您必须刷新listview作为listview中的任何数据更新。
Secondly, the method you using for loading image is not good.
try this library to load remote or local image. it maintains cache automatically and very efficient for image loading.
Universal Image Loader
https://github.com/nostra13/Android-Universal-Image-Loader
答案 1 :(得分:0)
http://developer.android.com/reference/android/util/LruCache.html
http://developer.android.com/training/displaying-bitmaps/cache-bitmap.html