简一_hz 2016-06-23 16:09 采纳率: 0%
浏览 7906
已结题

android listview怎么实现单个item的某个数据刷新

用android的notifyDataSetChanged()方法会进行getView,导致每次所有都刷新;效率太低,我要怎样使某个item数据改变时只刷新那个item?
我的代码如下,请大神帮我改下!谢谢

 public class OfflineDownloadedAdapter extends BaseAdapter {

    private List<OfflineMapCity> cities = new ArrayList<OfflineMapCity>();

    private Context mContext;

    private OfflineChild currentOfflineChild;

    public OfflineDownloadedAdapter(Context context) {
        this.mContext = context;
        initCityList();

    }

    /**
     * 重新初始化数据加载数据
     */
    public void notifyDataChange() {
        initCityList();
    }

    private void initCityList() {
        if (cities != null) {
            for (Iterator it = cities.iterator(); it.hasNext();) {
                OfflineMapCity i = (OfflineMapCity) it.next();
                it.remove();
            }

        }
        cities.addAll(ByteOfflineMapManager.getInstance(mContext).getDownloadOfficeMapCityList());
        cities.addAll(ByteOfflineMapManager.getInstance(mContext).getDownloadingCityList());

        notifyDataSetChanged();


    }

    @Override
    public int getCount() {
        return cities.size();
    }

    @Override
    public Object getItem(int index) {
        return cities.get(index);
    }

    @Override
    public long getItemId(int position) {

        return position;
    }

    @Override
    public int getItemViewType(int position) {

        return 0;
    }

    public final class ViewHolder {
        public OfflineChild mOfflineChild;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        ViewHolder viewHolder;
        if (convertView != null) {
            viewHolder = (ViewHolder) convertView.getTag();
        } else {
            viewHolder = new ViewHolder();

            currentOfflineChild = new OfflineChild(mContext);
            convertView = currentOfflineChild.getOffLineChildView();
            viewHolder.mOfflineChild = currentOfflineChild;
            convertView.setTag(viewHolder);
        }
        OfflineMapCity offlineMapCity = (OfflineMapCity) getItem(position);
        viewHolder.mOfflineChild.setOffLineCity(offlineMapCity);

        return convertView;

    }
}

  • 写回答

9条回答 默认 最新

  • bdmh 移动开发领域优质创作者 2016-06-24 00:20
    关注

    首先不要每次都初始化数据,你只需要修改cities中对应的数据,然后调用adapter的notify即可

    评论

报告相同问题?