我遇到了一个大问题:我想在android上制作三个状态复选框.它是带有复选框的ListView上的复选框.它应该允许用户在三种状态之间切换:
并且可选择在变化时保持misc状态.
如果我是对的,我应该创建CompoundButton类的子类并实现boolean mchecked的int mstate intead.然后我应该覆盖事件监听器,保存状态的函数,以及状态getter和setter.
我的问题基本上是如何实现的?如何在可绘制状态之间切换?(我已经在xml中实现了middle_state)以及如何正确实现事件处理程序?
这是我开始实施的:
public class TriStateCheckBox extends CompoundButton{
private int state;
public TriStateCheckBox(Context context) {
super(context);
}
public static interface onCheckChangedListener{
void onCheckChanged(TriStateCheckBox view, int state);
}
public void onCheckChanged(TriStateCheckBox view, int state){
this.state = state;
}
}
Run Code Online (Sandbox Code Playgroud)
这是股票CompoundButton的代码:
/*
* Copyright (C) 2007 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the …Run Code Online (Sandbox Code Playgroud) 几天后我遇到了一个大问题:当我尝试在布局和我的自定义surfaceview上绑定surfaceview时,我从自定义surfaceview获得了ClassCastException.
这是我的代码:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
waveform =(WaveFormView) findViewById(R.id.surfaceView1);
}
class WaveFormView extends SurfaceView implements SurfaceHolder.Callback {
public WaveFormView(Context context, AttributeSet attrs) {
super(context, attrs);
getHolder().addCallback(this);
_dthread = new DrawingThread(getHolder(), this);
setFocusable(true);
paintP.setStyle(Paint.Style.STROKE);
paintP.setStrokeWidth(1);
paintP.setColor(Color.WHITE);
paintT.setStyle(Paint.Style.STROKE);
paintT.setStrokeWidth(1);
paintT.setColor(Color.WHITE);
}
@Override
public void onDraw(Canvas canvas) {
canvas.drawColor(Color.BLACK);
for (int i=0;i<_athread.buffer.length-pas;i+=pas){
canvas.drawLine(i, 150-_athread.buffer[i], i+pas, 150-_athread.buffer[i+pas], paintP);
}
canvas.drawText("FPS: " + String.valueOf(FPS), 0, 10, paintT);
//canvas.drawText("tmp: " + tmp, 0, 20, paintT);
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, …Run Code Online (Sandbox Code Playgroud)