ListViewのitemをクリックすると、itemのボタンの背景が変更されることを避けるソリューション

4375 ワード

リストビュー内のbuttonにselectorを設定すると、リストビューにリストビューを設定します.setOnitemClickedListener()の場合、中のbuttonはpressの効果があります.
既存の解決策は、カスタムButtonを使用して、親コントロールがpressedであるかどうかを判断し、このイベントを消費し、下に渡さなければよいということです.
コードは次のとおりです.
 1 import android.content.Context;
 2 import android.util.AttributeSet;
 3 import android.view.View;
 4 import android.widget.Button;
 5 
 6 public class FixedListButton extends Button {
 7 
 8     public FixedListButton(Context context, AttributeSet attrs, int defStyle) {
 9         super(context, attrs, defStyle);
10         // TODO Auto-generated constructor stub
11     }
12 
13     public FixedListButton(Context context, AttributeSet attrs) {
14         super(context, attrs);
15         // TODO Auto-generated constructor stub
16     }
17 
18     public FixedListButton(Context context) {
19         super(context);
20         // TODO Auto-generated constructor stub
21     }
22 
23     @Override
24     public void setPressed(boolean pressed) {
25         // TODO Auto-generated method stub
26         if (pressed && getParent() instanceof View
27                 && ((View) getParent()).isPressed()) {
28             return;
29         }
30         super.setPressed(pressed);
31     }
32     
33 }