Intentando usar addHeaderView()
y addFooterView()
para un ListView
. Si trato de usar una Vista que he predefinido en XML para el encabezado o el pie de página, obtengo una excepción de puntero nulo. Sin embargo, si dinámicamente crear una vista usando el código, que funciona bien ...Android ListView addHeaderView() nullPointerException para vistas predefinidas definidas en XML
// This doesn't work... nullPointerException
ListView lv = (ListView) findViewById(R.id.my_list_view);
TextView header = (TextView) findViewById(R.id.my_header);
lv.addHeaderView(header);
// This works fine
ListView lv = (ListView) findViewById(R.id.my_list_view);
TextView header = new TextView(this);
TextView.setHeight(30);
TextView.setText("my header text!");
lv.addHeaderView(header);
Mi Seguimiento de la pila:
Caused by: java.lang.NullPointerException
at android.widget.ListView.clearRecycledState(ListView.java:522)
at android.widget.ListView.resetList(ListView.java:508)
at android.widget.ListView.setAdapter(ListView.java:440)
at com.company.myapp.MyActivity.refreshList(MyActivity.java:85)
at com.company.myapp.MyActivity.onCreate(MyActivity.java:37)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
... 11 more
Alguna pista?
Eso parece funcionar. Es realmente extraño que funcione bien con elementos creados dinámicamente. No estoy seguro de por qué tengo que saltar a través del aro de inflado de diseño aquí. Además, este método parece ignorar los márgenes que he establecido en el xml de mi Vista ... –
¿Puedes intentar poner esa vista de texto en un diseño diferente y luego inflarlo y luego usarlo para establecer la vista de encabezado y pie de página? – user370305
Eso funcionó. Acabo de envolver mi 'TextView' en un' LinearLayout'. Voy a marcar esto como mi respuesta, pero me gustaría saber por qué tuve que saltar por los aros para que funcione. No puedo decir si es un error o qué. ¡Gracias! –