自從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); } }