ListView

ListView

1-listview设置adapter(继承BaseAdapter )

class MyAdapter extends BaseAdapter {

    // listview一共展示条目的个数
    @Override
    public int getCount() {
        return 5;
    }

    // 根据Position的位置获取指定条目
    @Override
    public Object getItem(int position) {
        return null;
    }

    // 根据指定位置获取条目的id
    @Override
    public long getItemId(int position) {
        return 0;
    }

    /**
     * 这个方法:获取一个view(TextView,ImageView) 展示条目的内容 其实就代表每个条目的view 用来展示指定的数据
     * 索引从0开始 ,说明这个方法执行了10次. 当listview展示的条目
     * 一屏幕显示不下的时候,第一次getview方法执行多少次?当屏幕第一次能展示多少个条目就执行多少次,
     * 当我们拖动listview的时候,加载一个条目getView方法就执行一次
     * 

* convertView:当 listview第一次加载的时候convertView是null */ @Override public View getView(int position, View convertView, ViewGroup parent) { /* * 创建新的view对象 获取一个打气筒服务 把一个布局xml转换为View对象 参数1:context * 参数2:要填充资源的id 就是我们转换的布局资源的id(将该布局转换为View对象) 参数3:viewGroup控件都要放到viewGroup这个类里() */ //listview优化:缓冲机制,reuse. View view = null; if (convertView == null) { view = View.inflate(getApplicationContext(), R.layout.item, null); } else { view = convertView; } return view; } }

2-arrayadapter

当我有些简单的数据需要快速展示的时候,而且要展示的数据也不是特别多,数据的类型也不是特别复杂,这时候我就可以使用谷歌封装好的这个适配器

String objects[] = {"Android", "ios", "java", "php", "ui", "C"};
ListView lv = (ListView) findViewById(R.id.lv);
lv.setAdapter(new ArrayAdapter(getApplicationContext(), R.layout.item, objects));

3-simpleAdapter

        List> data = new ArrayList>();
        //参数三:代表listview条目的布局 from:就是map中定义的key
        //参数四:from,String[]数组,里面是集合中定义的key值
        //参数五:每个控件在R文件总都有个引用--为int类型值,int[]数组,里面就是定义相应字段在哪个控件中显示,即通过id找到控件
        lv.setAdapter(new SimpleAdapter(getApplicationContext(), data, R.layout.item, new String[]{"name", "phone"}, new int[]{R.id.tv_name, R.id.tv_phone}));

你可能感兴趣的:(ListView)