¿Cómo agregar una vista personalizada dentro de otra vista personalizada?

Estoy intentando agregar CustomViewBeta (un RelativeLayout extendido) a CustomViewAlpha (un LinearLayout extendido) – la idea que es que el CustomViewAlpha llevará a cabo un manojo de CustomViewBetas a la un ListView. No importa lo que intente, no funciona. Yo no veo nada – no CustomViewBetas, o me da un NPE cuando intento setText en uno de los TextViews dentro de la CustomViewBeta

CustomViewAlpha funciona bien ya que está codificado en el XML del Fragmento:

<?xml version="1.0" encoding="utf-8"?> <FrameLayout ...> <com.path.CustomViewAlpha android:id="@+id/customviewalpha" android:orientation="vertical" android:layout_gravity="center_vertical" android:layout_width="match_parent" android:layout_height="match_parent"/> </FrameLayout> 

Con el código siendo:

 public class CustomViewAlpha extends LinearLayout { private Context mContext; public CustomViewAlpha (Context context) { super(context); this.mContext = context; } public CustomViewAlpha (Context context, AttributeSet attrs) { super(context, attrs); this.mContext = context; } public CustomViewAlpha (Context context, AttributeSet attrs, int defStyle){ super(context, attrs,defStyle); this.mContext = context; } public void addCustomViewBeta(String someString){ CustomViewBeta customViewBeta = new CustomViewBeta(mContext); addView(customViewBeta); } 

CustomViewBeta no está codificado en el XML del fragmento y se agrega mediante programación:

Public class CustomViewBeta extends RelativeLayout {contexto privado mContext;

 private TextView textView; public CustomViewBeta (Context context) { super(context); this.mContext = context; init(); } public CustomViewBeta (Context context, AttributeSet attrs) { super(context, attrs); this.mContext = context; init(); } public CustomViewBeta (Context context, AttributeSet attrs, int defStyle){ super(context, attrs,defStyle); this.mContext = context; init(); } private void init() { LayoutInflater.from(mContext).inflate(R.layout.customviewbeta, null, false); textView = (TextView) findViewById(R.id.tripleexpandablelistview_category_name); textView.setText("ASDASDASDAD"); } 

Con este XML siendo:

 <?xml version="1.0" encoding="utf-8"?> <com.path.CustomViewBeta xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:id="@+id/customviewbeta_textview" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </com.path.CustomViewBeta> 

Normalmente me golpean con un NPE en el "textView.setText (" ASDASDASDAD ");" Porque el TextView es nulo. ¿Hay algo que me falta? ¿No debo intentar inflar un XML para el CustomViewBeta y apenas lo hago programmatically (que agrega los textviews uno por uno programmatically?)? Gracias.

Tu init esta mal

 private void init() { LayoutInflater.from(mContext).inflate(R.layout.customviewbeta, null, false); textView = (TextView) findViewById(R.id.tripleexpandablelistview_category_name); textView.setText("ASDASDASDAD"); } 

El último parámetro tiene que ser true para agregar el TextView al RelativeLayout.Also ViewGroup , tiene un método static inflate ViewGroup , por lo que puede evitar LayoutInflater.from(mContext) , puede simplemente llamar inflate(mContext, R.layout.customviewbeta, this);

  • Error: No se encontró ningún recurso que coincida con el nombre dado (en 'theme' con el valor '@ style / AppTheme')
  • Spinner estilo de color en Android
  • Adaptación de adaptadores desde la vista de lista a la clase de vista de elemento único
  • Android: Alineación de cuatro cuadrados
  • Uso de atributos desde el nivel API más allá de minSdkVersion
  • Android Studio: ¿Cómo mover rápidamente el estilo de layout.xml a style.xml?
  • Appcompat res values-v21 Los errores de themes_base en eclipse no desaparecen
  • ¿El botón del interruptor-botón se inclina?
  • Debe utilizar "sp" en lugar de "dp" para los tamaños de texto
  • Adición de una imagen como texto de fondo del texto
  • Android: Barra de estado transparente con colores dinámicos de la acciónBar y DrawerLayout
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.