自从recycleview问世,listview走上了被抛弃的道路,这个慢慢过期的控件,就真的一无可取了吗?java
recycleview的优势就是灵活性很好,缺点也有,就是灵活性太好了,不少东西须要本身动手去写,例如添加头部,添加item的点击事件,回头想一想,在listview中,这些功夫都省去了,若是需求不是特别复杂的话,listview仍是颇有用武之地的。android
listview调用三部曲ide
一、在xml布局文件中添加listview控件,建立item布局文件布局
<ListView android:id="@+id/listview" android:layout_width="match_parent" android:layout_height="wrap_content" />
二、建立adapter测试
public class MyAdapter extends BaseAdapter { private List<Map<String, String>> data; private Context context; public MyAdapter(List<Map<String, String>> data, Context context) { this.data = data; this.context = context; } @Override public int getCount() { // TODO Auto-generated method stub return data.size(); } @Override public Object getItem(int position) { // TODO Auto-generated method stub return data.get(position); } @Override public long getItemId(int position) { // TODO Auto-generated method stub return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub ViewHolder holder = null; if (convertView == null) { holder = new ViewHolder(); convertView = View.inflate(context, R.layout.item, null);//item布局文件 convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } //在这里初始化数据和绑定相关事件 return convertView; } private class ViewHolder { } }
三、绑定listview控件,并初始化this
//初始化数据 private List<Map<String, String>> datalist; private void initData() { datalist = new ArrayList<Map<String, String>>(); for (int i = 0; i < 20; i++) { datalist.add(new HashMap<String, String>()); } } //初始化listview控件 private ListView listview; private Context mContext; private MyAdapter adapter; listview = (ListView) findViewById(R.id.listview); adapter = new MytAdapter(datalist, mContext); listview.setAdapter(adapter);
这里插入的数据被放到list里面,经过map键值对来输入具体数据,相对灵活,若是每次输入的数据都是固定的几组,能够建立一个bean来替代map,例如code
private void initData() { datalist = new ArrayList<Listbean>(); for (int i = 0; i < 15; i++) { Listbean bean = new Listbean(); bean.setTitle("测试数据--" + i); bean.setType(i % 3); datalist.add(bean); } }