U
Unicate
Erfahrenes Mitglied
- 57
Hallo alle zusammen!
Ich habe eine CustomView sie heisst CheckableImageView:
Diese lade ich in eine GridView.
Wenn ich der GridView nun einen onItemClickListener gebe, dann wird dieser nicht aufgerufen.
Wenn ich aber das CheckableImageView auf disabled setze (und somit keine checkbox mehr reinmale), dann funktioniert es.
Was mach ich falsch, bzw. wie bekomme ich meine View dazu auch auf onItemClick zu reagieren?
Ich habe eine CustomView sie heisst CheckableImageView:
PHP:
package de.mms.anti.android.redbull.customviews;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.widget.Checkable;
import android.widget.ImageView;
import de.mms.anti.android.redbull.R;
public class CheckableImageView extends ImageView implements Checkable {
private boolean _checked = false;
private boolean _enabled = true;
private Bitmap _bitmapChecked;
private Bitmap _bitmapUnchecked;
private OnCheckedChangeListener _listener;
public CheckableImageView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init();
}
public CheckableImageView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public CheckableImageView(Context context) {
super(context);
init();
}
public void init() {
_bitmapChecked = BitmapFactory.decodeResource(getResources(), R.drawable.field_checked);
_bitmapUnchecked = BitmapFactory.decodeResource(getResources(), R.drawable.field_emtpy);
}
public void setOnCheckedChangeListener(OnCheckedChangeListener listener) {
_listener = listener;
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
if(_enabled) {
Bitmap bitmap = (_checked)?_bitmapChecked:_bitmapUnchecked;
canvas.drawBitmap(bitmap, 5,5,new Paint());
}
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if(_enabled && event.getAction() == MotionEvent.ACTION_UP) {
toggle();
invalidate();
}
return super.onTouchEvent(event);
}
@Override
public boolean isChecked() {
return _checked;
}
@Override
public void setChecked(boolean checked) {
if(_checked != checked && null != _listener) {
_checked = checked;
_listener.onCheckedChanged(this, checked);
} else {
_checked = checked;
}
}
@Override
public void toggle() {
_checked = !_checked;
if(null != _listener)
_listener.onCheckedChanged(this, _checked);
}
@Override
public void setEnabled(boolean enabled) {
_enabled = enabled;
super.setEnabled(enabled);
}
}
Wenn ich der GridView nun einen onItemClickListener gebe, dann wird dieser nicht aufgerufen.
Wenn ich aber das CheckableImageView auf disabled setze (und somit keine checkbox mehr reinmale), dann funktioniert es.
Was mach ich falsch, bzw. wie bekomme ich meine View dazu auch auf onItemClick zu reagieren?