首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android 課表介面布局設計:使用 ListView 巢狀結構實現星期與課程顯示

     編輯:程式設計綜合問答

介面結構分析

截圖顯示:頂部標題列、底部功能按鈕、中間為星期與課程區域。中間部分每列對應一週某天,右側列出該天課程。

布局建議

  1. 外層 ListView:每一項代表一天(星期一~星期日),固定 7 筆資料。
  2. 項目布局:左側顯示星期文字,右側放一個 內層 ListView 顯示該天課程列表。
  3. 內層 ListView:資料來源為該天課程陣列,項目數不固定,適合動態增減。

關鍵程式碼片段

外層 Adapter (DayAdapter)

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;
    }
}

內層 Adapter (CourseAdapter)

public class CourseAdapter extends BaseAdapter {
    private List<Course> courses;
    // 標準 getView 實作,顯示課程名稱、時間、教室等
}

布局 XML 要點

<!-- 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 處理無課程天的空狀態佈局。
  • 資料來源建議從本地資料庫或網路 API 非同步載入,避免阻塞 UI 執行緒。

截圖參考

課表介面設計圖

結語

掌握 ListView 巢狀用法、自訂 Adapter 以及 XML 佈局編寫,是 Android 介面開發的基本功。多動手寫 XML、少依賴拖拽,才能見介面即知結構。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved