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"/>


该空间只能有一个子节点,如果需要添加多个空间,可以添加一个布局节点在做控件节点