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

Android ListView 隨機排序後點擊開啟對應 Activity:用資料源位置而非 View 文字判斷

     編輯:程式設計綜合問答

問題

Collections.shuffle(list) 打亂順序後,onItemClick 中用 ((TextView)view).getText() 比對字串決定開啟哪個 Activity,不可靠且效能差。

正確做法:使用 position 索引對應資料源

ListView lv = getListView();
lv.setOnItemClickListener((parent, view, position, id) -> {
    String item = bands.get(position); // 直接從資料源取得當前位置項目
    if ("Band0".equals(item)) {
        Intent i = new Intent(Bands.this, AudioActivity.class);
        i.putExtra("Band", 0);
        startActivity(i);
    } else if ("Band1".equals(item)) { ... }
});

進階:資料模型封裝目標 Activity

class BandItem {
    String name;
    Class targetActivity;
    int bandIndex;
}

// 建構資料
List bands = Arrays.asList(
    new BandItem("Band0", AudioActivity.class, 0),
    new BandItem("Band1", VideoActivity.class, 1),
    ...
);

// 點擊處理
lv.setOnItemClickListener((parent, view, position, id) -> {
    BandItem item = bands.get(position);
    Intent i = new Intent(Bands.this, item.targetActivity);
    i.putExtra("Band", item.bandIndex);
    startActivity(i);
});

關鍵原則

  • **永遠從資料源 (Adapter 內部列表) 根據 position 取得資料**,不要解析 View 內容
  • 資料模型封裝行為(目標 Activity、參數),邏輯集中、易維護
  • Collections.shuffle 只影響列表順序,資料模型綁定的行為不變
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved