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

Android ListView 項目點擊傳遞完整資料到下一頁:封裝 Bean 實作 Serializable/Parcelable

     編輯:程式設計綜合問答

問題現象

onListItemClick 僅能取得單一字串(getItem(position) 回傳 Adapter 的資料物件,此處為 String),需傳遞圖片、名稱、價格等完整資訊到下一個 Activity。

解決方案:資料模型序列化

步驟一:建立資料 Bean 實作 Serializable


public class PropertyItem implements Serializable {
    private String name;
    private String imageUrl;
    private double price;
    // 其他欄位...
    
    // 建構子、getter/setter、toString()...
}

步驟二:Adapter 使用 Bean 列表


ArrayList items = new ArrayList<>();
// 解析 JSON 填充 items...
setListAdapter(new MobileArrayAdapter(this, items));

步驟三:點擊時傳遞完整 Bean


@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
    PropertyItem item = (PropertyItem) getListAdapter().getItem(position);
    
    Intent intent = new Intent(this, DetailActivity.class);
    intent.putExtra("property_item", item);  // 直接放入 Serializable 物件
    startActivity(intent);
}

步驟四:目標 Activity 接收


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_detail);
    
    PropertyItem item = (PropertyItem) getIntent().getSerializableExtra("property_item");
    if (item != null) {
        nameText.setText(item.getName());
        priceText.setText(String.format("%.2f", item.getPrice()));
        Glide.with(this).load(item.getImageUrl()).into(imageView);
    }
}

進階:使用 Parcelable(效能更好)


// Kotlin 一鍵生成
@Parcelize
data class PropertyItem(
    val name: String,
    val imageUrl: String,
    val price: Double
) : Parcelable

// 傳遞
intent.putExtra("property_item", item)  // Parcelable 同樣支援 putExtra

// 接收
val item = intent.getParcelableExtra("property_item")

替代方案:單獨傳遞欄位


intent.putExtra("name", item.getName());
intent.putExtra("price", item.getPrice());
intent.putExtra("image_url", item.getImageUrl());
// 接收時逐個 getStringExtra/getDoubleExtra...

缺點:欄位多時程式碼冗長、易漏欄位、重構困難。

最佳實踐總結

  1. 封裝 Bean:將相關資料聚合為單一物件。
  2. 實作序列化:Parcelable(Android 推薦,高效)或 Serializable(簡單,較慢)。
  3. 單一 putExtra:傳遞完整物件,接收端一次取出,維護性最佳。
  4. Kotlin @Parcelize:自動生成樣板碼,零負擔。

掌握「資料模型序列化跨 Activity 傳遞」模式,是 Android 多頁面資料流轉的核心技能。

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