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

Android 少量項目列表:重複布局 vs 不可滾動 ListView 選型

     編輯:程式設計綜合問答

場景定義

固定 3-5 項,無需滾動,項目佈局相同。

方案對比

維度重複布局 (LinearLayout + include)ListView (setNestedScrollingEnabled(false))
代碼量XML 重複或 include,Java 手動 findViewAdapter 復用,數據驅動
性能極佳(無遞歸渲染、無滾動邏輯)略高開銷(Adapter、ViewHolder、測量布局)
維護性差(修改項目佈局需改多處/改 include)好(單一 Item 佈局,邏輯集中)
動態增減麻煩(動態 inflate/addView)天然支持 (notifyDataSetChanged)
點擊事件各自 setOnClickListenersetOnItemClickListener 統一
內存常駐所有 View同(不回收,項目少可忽略)

推薦決策

選重複布局,如果:

  • 項目固定 3-5 個,永不變動
  • 每項邏輯差異大(不同點擊、不同數據綁定)
  • 極度追求渲染性能(如啟動頁、引導頁)
  • 團隊不熟悉 Adapter模式

選 ListView/RecyclerView,如果:

  • 項目數量可能變化(配置下發、權限控制)
  • 項目邏輯高度一致(同樣綁定、同樣點擊)
  • 需要動畫、分割線、選中態等列表特性
  • 遵循數據驅動 UI原則,利於擴展

現代最佳實踐:RecyclerView + LinearLayoutManager

RecyclerView rv = findViewById(R.id.rv);
rv.setLayoutManager(new LinearLayoutManager(this));
rv.setNestedScrollingEnabled(false); // 禁用滾動
rv.setHasFixedSize(true); // 項目高度固定優化
rv.setAdapter(new SimpleAdapter(items));

RecyclerView 替代 ListView,API 更清晰,支持動畫、ItemDecoration、靈活佈局管理器。

重複布局優化技巧

<!-- item_layout.xml -->
<LinearLayout ...>
    <TextView android:id="@+id/tvTitle" />
    <TextView android:id="@+id/tvDesc" />
</LinearLayout>

<!-- 主佈局 -->
<LinearLayout android:orientation="vertical">
    <include layout="@layout/item_layout" android:id="@+id/item1" />
    <include layout="@layout/item_layout" android:id="@+id/item2" />
    <include layout="@layout/item_layout" android:id="@+id/item3" />
</LinearLayout>

<!-- Java 統一綁定 -->
View item1 = findViewById(R.id.item1);
bindItem(item1, data1);
View item2 = findViewById(R.id.item2);
bindItem(item2, data2);
// ...

private void bindItem(View item, Data data) {
    ((TextView)item.findViewById(R.id.tvTitle)).setText(data.title);
    ((TextView)item.findViewById(R.id.tvDesc)).setText(data.desc);
    item.setOnClickListener(v -> handleClick(data));
}

總結

3-5 固定項、邏輯異、極簡場景 → 重複布局 + `include` + 統一綁定方法。
其餘所有場景 → RecyclerView (禁用滾動)。
現代開發默認選 RecyclerView,除非有極強理由不用。

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