ListView 的每個 Item 佈局為獨立 XML,Item 內包含一個 Button。需要在 Adapter 中為這個動態生成的 Button 註冊點擊事件。
在 Adapter 的 getView() 方法中,透過 convertView.findViewById() 獲取 Button 實例,然後直接設定 OnClickListener。此法簡單直觀,適合邏輯不複雜的場景。
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = LayoutInflater.from(context).inflate(R.layout.item_layout, parent, false);
}
Button btn = convertView.findViewById(R.id.btn_item); // 替換為實際 Button ID
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 在此處理點擊邏輯,可獲取 position 執行對應操作
Toast.makeText(context, "點擊了第 " + position + " 項", Toast.LENGTH_SHORT).show();
}
});
return convertView;
}
setTag() 綁定到 Button 或 convertView 上。setOnItemClickListener 與 Item 內部按鈕點擊衝突,必要時設定 android:focusable="false" 於按鈕。