截圖顯示:頂部標題列、底部功能按鈕、中間為星期與課程區域。中間部分每列對應一週某天,右側列出該天課程。
public class DayAdapter extends BaseAdapter {
private String[] days = {"Mon","Tue","Wed","Thu","Fri","Sat","Sun"};
private List<List<Course>> allCourses; // 每天課程列表
@Override public View getView(int pos, View cv, ViewGroup parent) {
ViewHolder holder;
if (cv == null) {
cv = LayoutInflater.from(ctx).inflate(R.layout.item_day, null);
holder = new ViewHolder();
holder.tvDay = cv.findViewById(R.id.tvDay);
holder.lvCourses = cv.findViewById(R.id.lvCourses);
cv.setTag(holder);
} else holder = (ViewHolder)cv.getTag();
holder.tvDay.setText(days[pos]);
// 內層 ListView 設定專屬 Adapter
holder.lvCourses.setAdapter(new CourseAdapter(allCourses.get(pos)));
return cv;
}
}
public class CourseAdapter extends BaseAdapter {
private List<Course> courses;
// 標準 getView 實作,顯示課程名稱、時間、教室等
}
<!-- item_day.xml -->
<LinearLayout android:orientation="horizontal" ...>
<TextView android:id="@+id/tvDay" android:layout_width="60dp" ... />
<ListView android:id="@+id/lvCourses"
android:layout_width="0dp" android:layout_weight="1"
android:layout_height="wrap_content" />
</LinearLayout>
RecyclerView 替代 ListView,支援局部刷新與動畫。ViewType 處理無課程天的空狀態佈局。
掌握 ListView 巢狀用法、自訂 Adapter 以及 XML 佈局編寫,是 Android 介面開發的基本功。多動手寫 XML、少依賴拖拽,才能見介面即知結構。