Quiero hacer una costumbre RelativeLayout, pero me siguen dando este error:¿Cómo extiendo correctamente una clase de diseño?
08-01 02:28:19.385: E/AndroidRuntime(9989): FATAL EXCEPTION: main
08-01 02:28:19.385: E/AndroidRuntime(9989): android.view.InflateException: Binary XML file line #1: Error inflating class com.stevenschoen.putio.CheckableRelativeLayout
08-01 02:28:19.385: E/AndroidRuntime(9989): at android.view.LayoutInflater.createView(LayoutInflater.java:596)
08-01 02:28:19.385: E/AndroidRuntime(9989): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:687)
08-01 02:28:19.385: E/AndroidRuntime(9989): at android.view.LayoutInflater.inflate(LayoutInflater.java:466)
08-01 02:28:19.385: E/AndroidRuntime(9989): at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
...
08-01 02:28:19.385: E/AndroidRuntime(9989): Caused by: java.lang.NoSuchMethodException: <init> [class android.content.Context, interface android.util.AttributeSet]
08-01 02:28:19.385: E/AndroidRuntime(9989): at java.lang.Class.getConstructorOrMethod(Class.java:460)
08-01 02:28:19.385: E/AndroidRuntime(9989): at java.lang.Class.getConstructor(Class.java:431)
08-01 02:28:19.385: E/AndroidRuntime(9989): at android.view.LayoutInflater.createView(LayoutInflater.java:561)
Y aquí es mi clase:
public class CheckableRelativeLayout extends RelativeLayout implements
Checkable {
public CheckableRelativeLayout(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
private boolean isChecked;
// List<Checkable> checkableViews = new ArrayList<Checkable>();
// @see android.widget.Checkable#isChecked()
public boolean isChecked() {
return isChecked;
}
// @see android.widget.Checkable#setChecked(boolean)
public void setChecked(boolean isChecked) {
this.isChecked = isChecked;
// for (Checkable c : checkableViews) {
// Pass the information to all the child Checkable widgets
// c.setChecked(isChecked);
// }
}
// @see android.widget.Checkable#toggle()
public void toggle() {
this.isChecked = !this.isChecked;
// for (Checkable c : checkableViews) {
// Pass the information to all the child Checkable widgets
// c.toggle();
// }
}
@Override
protected void onFinishInflate() {
super.onFinishInflate();
final int childCount = this.getChildCount();
for (int i = 0; i < childCount; ++i) {
findCheckableChildren(this.getChildAt(i));
}
}
/**
* Add to our checkable list all the children of the view that implement the
* interface Checkable
*/
private void findCheckableChildren(View v) {
if (v instanceof Checkable) {
// this.checkableViews.add((Checkable) v);
}
if (v instanceof ViewGroup) {
final ViewGroup vg = (ViewGroup) v;
final int childCount = vg.getChildCount();
for (int i = 0; i < childCount; ++i) {
findCheckableChildren(vg.getChildAt(i));
}
}
}
}
¿Qué estoy haciendo mal?
Estoy utilizando este mismo código para ListView con opción simple con radio en el lado izquierdo de la fila, no puedo verificar un elemento cuando cargo esta lista por primera vez, ya que tengo que mostrar un elemento predeterminado pre seleccionado. – Puneet