android 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 TestAndroidListActivity extends Activity {
 
    private int start_index, end_index;
 
    // 判断是否是初始化
    private boolean isInit = false;
    private ListView list;
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        this.initList();
    }
 
    private BaseAdapter adapter = new BaseAdapter() {
 
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            // TODO Auto-generated method stub
            View 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;
        }
 
        @Override
        public long getItemId(int position) {
            // TODO Auto-generated method stub
            return 0;
        }
 
        @Override
        public Object getItem(int position) {
            // TODO Auto-generated method stub
            return null;
        }
 
        @Override
        public int getCount() {
            // TODO Auto-generated method stub
            return 140;
        }
    };
 
    private void initList() {
        // TODO Auto-generated method stub
        list = (ListView) this.findViewById(R.id.list);
        list.setAdapter(adapter);
        list.setOnScrollListener(new OnScrollListener() {
 
            @Override
            public void onScrollStateChanged(AbsListView view, int scrollState) {
                // TODO Auto-generated method stub
                isInit = 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;
                }
            }
 
            @Override
            public void onScroll(AbsListView view, int firstVisibleItem,
                    int visibleItemCount, int totalItemCount) {
                // TODO Auto-generated method stub
                // 设置当前屏幕显示的起始index和结束index
                start_index = firstVisibleItem;
                end_index = firstVisibleItem + visibleItemCount;
 
            }
        });
 
    }
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值