实现类似课程表或出诊表,方法多种多样,有可以用TabelLayout, 也可用GridView等。这里我用ListView来实现。最初的项目需求原型是这个样子滴:
关注的重点:1. 表格线怎么实现; 2. 用listview的话,怎么设置item布局。
分析:listview有个属性,divider。设置divider, 可以有行分割线。 具体的列分割线的话,在item布局中一个一个配置好了。另外,布局也分两种,一种是titel布局,设置上午,下午和晚上这个规定的标题。一种是body布局,配置每天的出诊时间安排。
从服务端获取数据我就一笔带过, 现在是我拿到了21个数据,我将它们直接放置在一个ArrayList 中(后面会讲如何优化这个存储方式)。 以下看如何设置在adapter中。
先看listview item的2个布局:
item_time_titel.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="horizontal" >
<TextView
android:layout_width="0dp"
android:layout_weight="1"
android:gravity="center"
android:layout_height="40dp"
android:text=""
/>
<View style="@style/style_line_vertical" />
<TextView
android:layout_width="0dp"
android:layout_weight="1"
android:gravity="center"
android:layout_height="40dp"
android:text="上午"
/>
<View style="@style/style_line_vertical" />
<TextView
android:layout_width="0dp"
android:layout_weight="1"
android:gravity="center"
android:layout_height="40dp"
android:text="下午"
/>
<View style="@style/style_line_vertical" />
<TextView
android:layout_width="0dp"
android:layout_weight="1"
android:gravity="center"
android:layout_height="40dp"
android:text="晚上"
/>
</LinearLayout>
item_time_body.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="horizontal" >
<TextView
android:id="@+id/tv_week"
android:layout_width="0dp"
android:layout_weight="1"
android:gravity="center"
android:layout_height="40dp"
android:text="星期一"
/>
<View style="@style/style_line_vertical" />
<Button
android:id="@+id/btn_am"