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

Android ListView 項目整行點擊:設置項目根布局 OnClickListener 實現按鈕效果

     編輯:程式設計綜合問答

需求

ListView 項目包含「管理地址」「幫助與反饋」等文本,整行背景帶點擊反饋,點擊任意位置觸發同一操作。

最簡方案:項目根佈局綁定點擊





    
    

Adapter 中綁定


@Override
public View getView(int position, View convertView, ViewGroup parent) {
    ViewHolder holder;
    if (convertView == null) {
        convertView = inflater.inflate(R.layout.item_layout, parent, false);
        holder = new ViewHolder(convertView);
        convertView.setTag(holder);
    } else {
        holder = (ViewHolder) convertView.getTag();
    }
    
    // 綁定數據
    holder.title.setText(items[position].title);
    holder.icon.setImageResource(items[position].iconRes);
    
    // 關鍵:convertView 即根佈局,直接設置監聽
    final int pos = position;
    convertView.setOnClickListener(v -> {
        onItemClick(pos, items[pos]);
    });
    
    return convertView;
}

進階:Selector 背景狀態




    
    
    

```

android:background="@drawable/item_bg"

RecyclerView 版本(現代標準)


class MyAdapter extends RecyclerView.Adapter {
    class VH extends RecyclerView.ViewHolder implements View.OnClickListener {
        VH(View itemView) {
            super(itemView);
            itemView.setOnClickListener(this); // 項目根視圖綁定
        }
        void onClick(View v) {
            listener.onItemClick(getAdapterPosition());
        }
    }
}

核心原則

  1. 根佈局可點擊:clickable="true" + 背景 selector
  2. 事件綁定在根視圖:而非內部子控件
  3. 位置捕獲用 final/有效 final 變量:避免位置錯亂

一行代碼 convertView.setOnClickListener(...) 解決整行點擊,配合 Selector 背景,體驗媲美原生按鈕。

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