ListView滑动过程中禁止加载图片

listview加载图片优化的功能,

在我们使用新浪微博的时候,细心的同学一定发现了,在滑动的过程中,图片是没有被加载的,

而是在滑动停止时,才加载图片了。

我们今天就做一个这样的效果吧。

我们先考虑两个问题:

1、在滑动停止的时候,如何获得需要加载的图片控件?

2、因为listiew在初始化完成的时候,OnScrollListener的onScrollStateChanged与onScroll并未被触发,如何初始化第一页的图片?

[java]  view plain copy
  1. package com.test.list;  
  2.   
  3. import android.app.Activity;  
  4. import android.os.Bundle;  
  5. import android.util.Log;  
  6. import android.view.View;  
  7. import android.view.ViewGroup;  
  8. import android.widget.AbsListView;  
  9. import android.widget.AbsListView.OnScrollListener;  
  10. import android.widget.BaseAdapter;  
  11. import android.widget.ImageView;  
  12. import android.widget.ListView;  
  13.   
  14. public class Test<a target="_blank" href="http://www.2cto.com/kf/yidong/Android/" class="keylink" style="border:none; padding:0px; margin:0px; color:rgb(51,51,51); text-decoration:none; font-size:14px">Android</a>ListActivity extends Activity {  
  15.   
  16.     private int start_index, end_index;  
  17.   
  18.     // 判断是否是初始化  
  19.     private boolean isInit = false;  
  20.     private ListView list;  
  21.   
  22.     @Override  
  23.     public void onCreate(Bundle savedInstanceState) {  
  24.         super.onCreate(savedInstanceState);  
  25.         setContentView(R.layout.main);  
  26.         this.initList();  
  27.     }  
  28.   
  29.     private BaseAdapter adapter = new BaseAdapter() {  
  30.   
  31.         @Override  
  32.         public View getView(int position, View convertView, ViewGroup parent) {  
  33.             // TODO Auto-generated method stub  
  34.             View v;  
  35.             if (convertView == null) {  
  36.                 v = getLayoutInflater().inflate(R.layout.list_item, null);  
  37.                 v.setTag(v);  
  38.             } else {  
  39.                 v = (View) convertView.getTag();  
  40.                 ImageView iv = (ImageView) v.findViewById(R.id.img);  
  41.                 iv.setImageResource(R.drawable.ic_launcher);  
  42.             }  
  43.             ImageView iv = (ImageView) v.findViewById(R.id.img);  
  44.             // 给图片控件设置上对应的位置编号  
  45.             iv.setTag(position);  
  46.             if (!isInit) {  
  47.                 iv.setImageResource(R.drawable.update_log);  
  48.             }  
  49.   
  50.             return v;  
  51.         }  
  52.   
  53.         @Override  
  54.         public long getItemId(int position) {  
  55.             // TODO Auto-generated method stub  
  56.             return 0;  
  57.         }  
  58.   
  59.         @Override  
  60.         public Object getItem(int position) {  
  61.             // TODO Auto-generated method stub  
  62.             return null;  
  63.         }  
  64.   
  65.         @Override  
  66.         public int getCount() {  
  67.             // TODO Auto-generated method stub  
  68.             return 140;  
  69.         }  
  70.     };  
  71.   
  72.     private void initList() {  
  73.         // TODO Auto-generated method stub  
  74.         list = (ListView) this.findViewById(R.id.list);  
  75.         list.setAdapter(adapter);  
  76.         list.setOnScrollListener(new OnScrollListener() {  
  77.   
  78.             @Override  
  79.             public void onScrollStateChanged(AbsListView view, int scrollState) {  
  80.                 // TODO Auto-generated method stub  
  81.                 isInit = true;  
  82.                 switch (scrollState) {  
  83.                 case OnScrollListener.SCROLL_STATE_IDLE:// 滑动停止  
  84.                     for (; start_index < end_index; start_index++) {  
  85.                         ImageView img = (ImageView) list.findViewWithTag(start_index);  
  86.                         img.setImageResource(R.drawable.update_log);  
  87.                     }  
  88.                     break;  
  89.   
  90.                 default:  
  91.                     break;  
  92.                 }  
  93.             }  
  94.   
  95.             @Override  
  96.             public void onScroll(AbsListView view, int firstVisibleItem,  
  97.                     int visibleItemCount, int totalItemCount) {  
  98.                 // TODO Auto-generated method stub  
  99.                 // 设置当前屏幕显示的起始index和结束index  
  100.                 start_index = firstVisibleItem;  
  101.                 end_index = firstVisibleItem + visibleItemCount;  
  102.   
  103.             }  
  104.         });  
  105.   
  106.     }  
  107. }  
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值