Android之 ListView滑动时不加载图片

来源:互联网 发布:sql是系统软件 编辑:程序博客网 时间:2024/05/29 08:56

listview加载图片优化的功能,

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

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

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

我们先考虑两个问题:

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

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

package com.test.list;import android.app.Activity;import android.os.Bundle;import android.util.Log;import android.view.View;import android.view.ViewGroup;import android.widget.AbsListView;import android.widget.AbsListView.OnScrollListener;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.ListView;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 {private int start_index, end_index;// 判断是否是初始化private boolean isInit = false;private ListView list;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);this.initList();}private BaseAdapter adapter = new BaseAdapter() {@Overridepublic View getView(int position, View convertView, ViewGroup parent) {// TODO Auto-generated method stubView v;if (convertView == null) {v = getLayoutInflater().inflate(R.layout.list_item, null);v.setTag(v);} else {v = (View) convertView.getTag();ImageView iv = (ImageView) v.findViewById(R.id.img);iv.setImageResource(R.drawable.ic_launcher);}ImageView iv = (ImageView) v.findViewById(R.id.img);// 给图片控件设置上对应的位置编号iv.setTag(position);if (!isInit) {iv.setImageResource(R.drawable.update_log);}return v;}@Overridepublic long getItemId(int position) {// TODO Auto-generated method stubreturn 0;}@Overridepublic Object getItem(int position) {// TODO Auto-generated method stubreturn null;}@Overridepublic int getCount() {// TODO Auto-generated method stubreturn 140;}};private void initList() {// TODO Auto-generated method stublist = (ListView) this.findViewById(R.id.list);list.setAdapter(adapter);list.setOnScrollListener(new OnScrollListener() {@Overridepublic void onScrollStateChanged(AbsListView view, int scrollState) {// TODO Auto-generated method stubisInit = true;switch (scrollState) {case OnScrollListener.SCROLL_STATE_IDLE:// 滑动停止for (; start_index < end_index; start_index++) {ImageView img = (ImageView) list.findViewWithTag(start_index);img.setImageResource(R.drawable.update_log);}break;default:break;}}@Overridepublic void onScroll(AbsListView view, int firstVisibleItem,int visibleItemCount, int totalItemCount) {// TODO Auto-generated method stub// 设置当前屏幕显示的起始index和结束indexstart_index = firstVisibleItem;end_index = firstVisibleItem + visibleItemCount;}});}}


0 0
原创粉丝点击