为了账号安全,请及时绑定邮箱和手机立即绑定

这是否是一个更简单的实现思路

老师的这个思路不错,但是相当于自己重新实现了一遍getview这方法,也就是自己写的loadimage,要做一系列的计算才能知道当前的view有哪些,然后在onscrollstate中根据当前状态来判断是否加载。 但是我觉得这样很繁琐,为什么不反过来想,我设置一个flag,在onscrollstate取出滑动状态给flag,然后在getview 中根据这个flag来判断是否调用imageloader来异步加载。只需要多定义一个变量就可以实现了,感觉很简单。如果这个思路,有问题欢迎来探讨

正在回答

4 回答

这样是可以实现,当图片都加载完后,但效果不大友好,视图滚动时,图片还是会错乱的,视图停止滚动的时候才会切换正确对应图片.

0 回复 有任何疑惑可以回复我~

好像是的,老师主要重新实现了一下,异步任务,

0 回复 有任何疑惑可以回复我~
//我 打log来看了一下,觉得这样也实现了滚动时候不加载
@Override
public View getView(int position, View convertView, ViewGroup parent) {

   
   VeiwHoler vh = null;
   if (convertView == null) {
      convertView = mInflater.inflate(R.layout.item_layout, null);
      vh = new VeiwHoler();
      vh.tv_title = (TextView) convertView.findViewById(R.id.mytitle);
      vh.tv_content = (TextView) convertView.findViewById(R.id.mycontent);
      vh.iv_icon = (ImageView) convertView.findViewById(R.id.myicon);
      convertView.setTag(vh);
   } else {
      vh = (VeiwHoler) convertView.getTag();
   }
   vh.tv_title.setText(mlist.get(position).getTitle());
   vh.tv_content.setText(mlist.get(position).getContent());
   // 加载默认图片
   vh.iv_icon.setImageResource(R.mipmap.ic_launcher);

   // 往每一个imageview中设置一个与之对应的URL,加载时判断一下, 防止图片错位的情况
   vh.iv_icon.setTag(mlist.get(position).geticon_url());
   if (!isscroll) {
      mimageloader.dispaly(vh.iv_icon, mlist.get(position).geticon_url());
      Log.d(TAG, "getView: "+position);
   } else {
      mimageloader.cancelAllTask();
   }


   return convertView;
}

// listview 的滑动状态监听
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
  if (scrollState == SCROLL_STATE_IDLE) {
     isscroll = false;
     notifyDataSetChanged();
  } else {
     isscroll = true;
  }
}

1 回复 有任何疑惑可以回复我~

从tag里面获取,实现不了滚动的时候不加载

0 回复 有任何疑惑可以回复我~
#1

慕婉清1371058 提问者

你看一下,我在下面贴了一下代码,可能比我描述的清晰一些
2016-05-12 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Android必学-异步加载
  • 参与学习       50627    人
  • 解答问题       311    个

了解Android中的异步加载处理方法,这是面试问的最多的知识点

进入课程

这是否是一个更简单的实现思路

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信