我花了很多时间来解决我的问题。但不是解决方案的工作。
1.我在我的应用中实现了listview。在listview项目中包含图片(来自网址)和文字。
2.我每10个项目加载项目到listview并且notifydatasetchange()。
3.当notifydatasetchange()所有图片都刷新为什么?。
4.我希望listview像dealfish(OLX)应用程序一样工作。
此代码在查询10项之后并将项添加到列表
if (CAdapter != null) {
CAdapter.notifyDataSetChanged();
}
,此代码在适配器getview方法
中@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = new ViewHolder();
if (convertView == null) {
convertView = Layf.inflate(R.layout.content_list_extend_item, null);
holder.img_ContentImage = (ImageView) convertView.findViewById(R.id.img_ContentImage);
holder.tv_Title = (TextView) convertView.findViewById(R.id.tv_Title);
convertView.setTag(holder);
}
else
{
holder = (ViewHolder)convertView.getTag();
}
final ContentExtendInfo contentInfo = ContentList.get(position);
if(contentInfo != null){
if(holder.img_ContentImage != null) {
if (contentInfo.getPicture().length() > 0)
new DownloadImageViewTask(context, holder.img_ContentImage).execute(contentInfo.getPicture());
else
holder.img_ContentImage.setImageResource(R.drawable.default_img);
}
if(holder.tv_Title != null)
holder.tv_Title.setText(contentInfo.getTitle());
}
return convertView;
}
,此代码为DownloadImageViewTask类
public class DownloadImageViewTask extends AsyncTask<String, Void, Bitmap> {
private ImageView bmImage;
private Context context;
public DownloadImageViewTask(Context context, ImageView bmImage) {
this.bmImage = bmImage;
this.context = context;
}
public DownloadImageViewTask() {
}
protected Bitmap doInBackground(String... urls) {
String urldisplay = urls[0];
Bitmap img = null;
try {
InputStream in = new java.net.URL(urldisplay).openStream();
img = BitmapFactory.decodeStream(in);
} catch (Exception e) {
Log.e("Error", e.getMessage());
e.printStackTrace();
}
return img;
}
protected void onPostExecute(Bitmap result) {
bmImage.setImageBitmap(result);
}
}