listview的二级优化

来源:互联网 发布:韩版硅胶手表淘宝 编辑:程序博客网 时间:2024/06/05 15:48
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;    }}
0 0