ListView

一、ListView入门

1.定义ListView在布局中

2.定义ListView的数据适配器

3.实现baseAdapter的getCount方法和getView方法。

二、ListView的优化

1.缓存对象

    //convertView 历史缓存对象
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            TextView tv;
            if(convertView == null){
                //创建新的View对象
                tv = new TextView(MainActivity.this);
                System.out.println("创建新的View对象--"+position);
            }else{
                System.out.println("复用历史缓存对象--"+position);
                tv = (TextView) convertView;

            }
            tv.setText("哈哈哈"+position);
            return tv;
        }
View Code

2. ListView的高使用填充父窗体 :fill_parent

三、ListView显示数据的原理

MVC模式(android):

m:mode 数据(javabean)

v:view(ListView)

c:adapter:作用是将数据展示至ListView

四、ListView显示复杂的页面

线性布局、相对布局都继承自viewgroup。

通过一个打气筒 inflate 可以把一个布局转换为一个view对象

 获取打气筒常用API(3种):

1.view = View.inflate(getApplicationContext(), R.layout.item, null);            
2.view = LayoutInflater.from(getApplicationContext()).inflate(R.layout.item, null);
3.LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
  inflater.inflate(R.layout.item, null);

五、ArrayAdapter

    String objects[] = {"aa","bb","cc","dd"};
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ListView lv = (ListView) findViewById(R.id.lv);
        //ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.item, objects);
        
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.item,R.id.tv_name, objects);

        lv.setAdapter(adapter);
    }
View Code

六、SimpleAdapter

//resource我们定义的布局文件       from map集合的键。     to布局文件的id
 SimpleAdapter simpleAdapter = new SimpleAdapter(getApplicationContext(), data, R.layout.item, new String[]{"name","phone"}, new int[]{R.id.tv_name,R.id.tv_phone});
原文地址:https://www.cnblogs.com/wjh123/p/5931451.html