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

Android 動態新增 ImageView 至 LinearLayout 並設定點擊監聽

     編輯:程式設計綜合問答

完整範例

LinearLayout container = findViewById(R.id.myLinearLayout);
int counter = 0;

Button addBtn = findViewById(R.id.addBtn);
addBtn.setOnClickListener(v -> {
    ImageView image = new ImageView(this);
    image.setImageResource(R.drawable.app_icon);
    image.setId(View.generateViewId()); // API 17+ 唯一 ID
    image.setTag(counter); // 可攜帶額外資料

    // 設定點擊事件
    image.setOnClickListener(clickView -> {
        int idx = (int) clickView.getTag();
        Toast.makeText(this, "Clicked image #" + idx, Toast.LENGTH_SHORT).show();
        // 呼叫你的業務函式
        handleImageClick(idx);
    });

    container.addView(image);
    counter++;
});

private void handleImageClick(int index) {
    // 具體業務邏輯
}

關鍵點

  • 使用 View.generateViewId() 產生不重複 ID(API 17+),避免硬編碼衝突。
  • 利用 setTag()/getTag() 攜帶索引或資料物件。
  • 動態新增的視圖會自動參與佈局流程(依 LinearLayout orientation 排列)。
  • 若需移除:container.removeViewAt(index) 或 container.removeView(view)。

進階:使用 RecyclerView 替代

若動態項目眾多、需回收複用、支援動畫,強烈建議改用 RecyclerView + Adapter,效能與維護性更佳。

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