如何使用像dealfish(OLX)应用程序一样的图像实现listview?

时间:2014-08-16 10:09:43

标签: android android-listview

我花了很多时间来解决我的问题。但不是解决方案的工作。

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);
    }
}

0 个答案:

没有答案