錯誤代碼
list.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { ... }); // 錯誤:觸摸不觸發
正確代碼
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView> parent, View view, int position, long id) {
// 處理點擊
}
});
區別
| 監聽器 | 觸發條件 | 適用場景 |
| OnItemClickListener | 觸摸/點擊 Item | 觸摸屏交互 |
| OnItemSelectedListener | 焦點移動到 Item (方向鍵、Trackball) | 非觸摸設備、鍵盤導航 |
注意
- Item 佈局中**不可**設置 `android:focusable="true"` 或 `android:focusableInTouchMode="true"`,否則會攔截點擊事件導致 `onItemClick` 不觸發。
- 若需長按,另行設置 `setOnItemLongClickListener`。
- 上一篇文章: Android 打開撥號盤並預填號碼:使用 Intent.ACTION_DIAL
- 下一篇文章: iOS 網頁視圖限制特定網站存取的實作方法
Copyright ©
程式碼之家 All Rights Reserved