ListView
简单来说就是在一个页面上以列表形式显示数据,列表里有很多项item,其中item里边可以有单纯的文字,也可以图文结合。
(1)首先要有数据源来填充到item中
(2)ListAdapter数据适配器将数据源与listView对应起来
一:创建数据源
数据源Route类,可以自动生成其get()、set()、构造方法。
public class Route {
String time;
String startPoint;
String terminalPoint;
String state;
long orderId;
public Route(String time, String startPoint, String terminalPoint, String state) {
super();
this.time = time;
this.startPoint = startPoint;
this.terminalPoint = terminalPoint;
this.state = state;
}
public String getTime() {
return time;
}
public void setTime(String time) {
this.time = time;
}
public String getStartPoint() {
return startPoint;
}
public void setStartPoint(String startPoint) {
this.startPoint = startPoint;
}
public String getTerminalPoint() {
return terminalPoint;
}
public void setTerminalPoint(String terminalPoint) {
this.terminalPoint = terminalPoint;
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
public long getOrderId() {
return orderId;
}
public void setOrderId(long orderId) {
this.orderId = orderId;
}
}
二:代码中使用步骤
首先建立当前页面的layout,添加listView组件
activity_order_list:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/white" android:orientation="vertical" > <TextView android:id="@+id/title" android:layout_width="0dip" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:text="我的行程" android:textColor="#ffffff" android:textSize="20sp" /> <ListView android:id="@+id/routeListView" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" > </ListView> </LinearLayout>
设置listView 中数据的View(也就是item项):效果图如下
order_list_item:
在代码中进行设置<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/select_item" android:orientation="vertical" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:divider="@drawable/divide" android:orientation="vertical" android:showDividers="end" > <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <LinearLayout android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:orientation="vertical" > <LinearLayout android:layout_width="fill_parent" android:layout_height="10dp" > </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <TextView android:id="@+id/orderTime" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:paddingLeft="8dp" android:text="Text1" android:textColor="@color/noteColr" /> <TextView android:id="@+id/state" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:paddingLeft="8dp" android:text="Text1" android:textColor="@color/noteColr" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="8dp" > </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="25dp" android:orientation="horizontal" > <ImageView android:layout_width="20dp" android:layout_height="20dp" android:paddingLeft="8dp" android:src="@drawable/start" /> <TextView android:id="@+id/startPoint" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:paddingLeft="8dp" android:text="起点" android:textColor="@color/textColor" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="8dp" > </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="25dp" android:orientation="horizontal" > <ImageView android:layout_width="20dp" android:layout_height="20dp" android:paddingLeft="8dp" android:src="@drawable/end" /> <TextView android:id="@+id/terminalPoint" android:layout_width="wrap_content" android:layout_height="match_parent" android:paddingLeft="8dp" android:text="终点" android:textColor="@color/textColor" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="10dp" > </LinearLayout> </LinearLayout> </LinearLayout> </LinearLayout> </LinearLayout>
初始化:
List<Route> routeList; //添加数据
onCreate()里边:
routeList = new ArrayList<Route>(); //初始化listView适配器
routeListView.setAdapter(new ListAdapter());
class ListAdapter extends BaseAdapter { SparseArray<View> array; public ListAdapter() { array = new SparseArray<View>(); } @Override public int getCount() { // 集中数据的个数 return routeList.size(); } @Override public Object getItem(int position) { // 获取数据集中与与制定数据对应的索引项 return routeList.get(position); } @Override public long getItemId(int position) { // 指定行对应的id return position; } @Override public View getView(int position, View convertView, ViewGroup arg2) { // 获取每个Item的显示内容 convertView = array.get(position); if (convertView == null) { convertView = LayoutInflater.from(getApplicationContext()).inflate(R.layout.order_list_item, null); TextView orderTime = (TextView) convertView.findViewById(R.id.orderTime); TextView startPoint = (TextView) convertView.findViewById(R.id.startPoint); TextView terminalPoint = (TextView) convertView.findViewById(R.id.terminalPoint); TextView orderState = (TextView) convertView.findViewById(R.id.state); Route route = routeList.get(position); orderTime.setText(routeList.get(position).getTime()); startPoint.setText(routeList.get(position).getStartPoint()); terminalPoint.setText(routeList.get(position).getTerminalPoint()); orderState.setText(routeList.get(position).getState()); convertView.setTag(routeList.get(position)); } return convertView; } }
为listView添加数据:/** * 设置listView数据 */ private void setData() { // TODO Auto-generated method stub for (int i = 0; i < 20; i++) { routelist.add(new Route("2017-7-8","合肥站","之心城","已完成")); } routeListView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { // TODO Auto-generated method stub } }); }