listview优化

来源:互联网 发布:windows客户端开发 编辑:程序博客网 时间:2024/06/08 20:11
package com.example.text;

import java.util.ArrayList;
import android.R.drawable;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;

public class MainActivity extends Activity {


    private ArrayList<String> list;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        //初始化控件
        ListView listView=(ListView) findViewById(R.id.m_listview);
        //初始化数据
        initData();
        //初始化适配器
        listView.setAdapter(new MyAdapter());
        
    }

    private void initData() {
        list = new ArrayList<String>();
        for (int i = 0; i < 1000; i++) {
            list.add("条目数"+i);
        }
        
    }

    class MyAdapter extends BaseAdapter{

        private View view;
        private viewHolder holder;

        @Override
        public int getCount() {
            // TODO Auto-generated method stub
            return list.size();
        }

        @Override
        public Object getItem(int position) {
            // TODO Auto-generated method stub
            return null;
        }

        @Override
        public long getItemId(int position) {
            // TODO Auto-generated method stub
            return 0;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            
            //如果视图没有加载过就加载视图
            if(convertView==null){
                //加载视图
                view = View.inflate(MainActivity.this, R.layout.item, null);
                //实例化静态内部类
                holder = new viewHolder();
                //把控件赋值给静态内部类的属性值
                holder.tvHolder=(TextView) view.findViewById(R.id.i_textview);
                holder.ivHolder=(ImageView) view.findViewById(R.id.i_imageView1);
                //把控件保存在视图的方法里
                view.setTag(holder);
            }else{
                /*如果不是第一次加载视图就把视图赋值给view,
                得到视图里的控件*/
                view=convertView;
                holder = (viewHolder) view.getTag();
            }
            
            //通过内部类给控件重新赋值
             holder.tvHolder.setText(list.get(position));
             holder.ivHolder.setImageResource(R.drawable.a);
            
            return view;
        }
        
    }
    
    //viewhodlse的内部类
    private static class viewHolder{
        private TextView tvHolder;
        private ImageView ivHolder;
    }
 
}

0 0
原创粉丝点击