您的位置:首页 > 移动开发 > Android开发

Android 开发ListView学习总结

2017-07-05 20:02 323 查看
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
aede
: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
}

});
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: