1、ListView 数据来源于数据适配器ListAdapter(接口)
2、ListAdapter接口中常用的子类 BaseAdapter、SimpleAdapter
2、xml写法
android:id="@+id/lv_show"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
3、定义ListView的数据适配器
常用的适配器 BaseAdpater、ArrayAdapter、SimpleAdapter
【1】BaseAdpater(常用)
public class MyAdpater extends BaseAdapter{
//需要显示数据的条数
@Override
public int getCount() {
return 0;
}
//返回指定position位置的数据对象,position从0开始计数
@Override
public Object getItem(int position) {
return null;
}
//返回指定position位置的item的ID
@Override
public long getItemId(int position) {
return 0;
}
/**
* 获取一个view,用来显示listView的数据,作为listView的一个Item
* @param position 显示的位置
* @param convertView 可重用的View(防止内存溢出),缓存的view
* @param parent
* @return
*/
@Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView tv = null;
if (null!=convertView) {
tv = (TextView) convertView;
}else{
tv = new TextView(getApplicationContext());
}
tv.setText("hello"+position);
return tv;
}
}
【2】ArrayAdpater
ListView lv = findViewById(R.id);
String[] strs = new String[]{"","",""};
1)ArrayAdapter array = new ArrayAdapter(context,R.layout.item,strs);
2)ArrayAdapter array = new ArrayAdapter(context,resource,resourceid,strs);
lv.inflate(array);
【3】SimpleAdapter
//context 上下文
//data List> 数据
//resource 资源View
//from String[] map结合的键 new String[]{"",""};
//to int[] 需要显示布局的ID new int[]{R.id.x,R.id,y};
SimpleAdapter simple = new SimpleAdapter(context,data,resource,from,to);
lv.setAdapter(simple);
4、打气筒 inflate
【1】将自定义布局转换成View 对象,填充到ListView中
【2】自定义布局View
【3】填充布局
//context 上下文
//resource 自定义布局 R.layout.xxx
//root ViewGroup
View.inflate(Context,resource,root);
【4】其他获取inflate其他常用API
1)、View.inflate(context,resource,ViewGroup);
2)、LayoutInflate.from(getApplicationContext()).inflate(R.layout.xx,ViewGroup);
3)、LayoutInflate inflater = getSytemService(LAYOUT_INFLATE_SERVICE)
inflater.inflate(resource,root);
6、设置数据适配器
ListView lv = findViewById(R.id.lv);
lv.setAdapter(定义的Adapter);
7、注意
高设置为match_parent,如果设置为wrap_content,系统会屏幕的高度计算不能确定需要对对内容进行多次校验,这样展示效率会降低
8、ScrollView 滚动窗体
android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
该空间只能有一个子节点,如果需要添加多个空间,可以添加一个布局节点在做控件节点