Android 开发ListView学习总结

来源:互联网 发布:淘宝分期付款额度 编辑:程序博客网 时间:2024/04/29 12:17

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>();}@Overridepublic int getCount() {// 集中数据的个数return routeList.size();}@Overridepublic Object getItem(int position) {// 获取数据集中与与制定数据对应的索引项return routeList.get(position);}@Overridepublic long getItemId(int position) {// 指定行对应的idreturn position;}@Overridepublic 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 stubfor (int i = 0; i < 20; i++) {routelist.add(new Route("2017-7-8","合肥站","之心城","已完成"));}routeListView.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {// TODO Auto-generated method stub}});}