listview的二级优化

本文介绍了一个简单的Android应用程序示例,展示了如何使用自定义的适配器为ListView填充数据。通过创建一个继承自BaseAdapter的MyAdapter类,实现了ListView的数据绑定,并介绍了ViewHolder模式的应用来提高性能。

public class MainActivity extends Activity {

    private ListView listView;
    List<String> datas;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        listView = (ListView) findViewById(R.id.listView1);
        datas = new ArrayList<String>();
        for (int i = 0; i < 10; i++) {
            datas.add("item" + i);

        }
        listView.setAdapter(new MyAdapter());
    }

//设配器
    class MyAdapter extends BaseAdapter {
        public int getCount() {
            return datas.size();
        }

        public Object getItem(int position) {
            return datas.get(position);
        }

        public long getItemId(int position) {
            return position;
        }

        public View getView(int position, View convertView, ViewGroup parent) {
            View view = null;
            ViewHolder vHolder;
            // listview的一级优化,减少view的创建次数(判断回收池是否为空)
            if (convertView == null) {
                vHolder = new ViewHolder();
                view = getLayoutInflater().inflate(R.layout.adapter_item, null);

                //在容器中找到控件
                vHolder.iv = (ImageView) view.findViewById(R.id.imageView1);
                vHolder.tv = (TextView) view.findViewById(R.id.textView1);

                //将容器放在
                view.setTag(vHolder);
            } else {
                view = convertView;
                vHolder = (ViewHolder) view.getTag();

            }

            // listview的二级优化,减少这一步的操作(也就是减少在控件中查找textview的次数)
            //TextView textView = (TextView) view.findViewById(R.id.textView1);
            //textView.setText(datas.get(position));
            vHolder.tv.setText(datas.get(position));

            return view;
        }
    }

    // 作为一个容器,用来存放item中的每一个控件
    class ViewHolder {
        TextView tv;
        ImageView iv;

    }

    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值