一、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; }
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); }
六、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});