tutorial recyclerview llenar example custom arrayadapter activity android android-listview

recyclerview - Su contenido debe tener un ListView cuyo id es el atributo ''android.R.id.list''



llenar un listview android (7)

Cambie el nombre de la Id de su ListView así,

<ListView android:id="@android:id/list" android:layout_width="fill_parent" android:layout_height="fill_parent"/>

Como está utilizando ListActivity su archivo xml debe especificar la palabra clave android mientras menciona una ID.

Si necesita un ListView personalizado, en lugar de extender una actividad de ListActivity , simplemente debe extender una Activity y debe tener la misma identificación sin la palabra clave android .

He creado un archivo xml como este:

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

y una actividad:

public class ExampleActivity extends ListActivity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.mainlist); } }

Como ve, no he hecho nada más. Pero estoy obteniendo el error:

Su contenido debe tener un ListView cuyo id es el atributo ''android.R.id.list''

Aunque tengo la línea android:id="@+id/list" en mi xml.

¿Cuál es el problema?


Debería tener una vista de lista en su archivo mainlist.xml con id como @android:id/list

<ListView android:id="@android:id/list" android:layout_height="wrap_content" android:layout_height="fill_parent"/>


Heredar clase de actividad en lugar de ListActivity puede resolver este problema.

public class ExampleActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.mainlist); } }


La forma exacta en que lo solucioné se basó en los comentarios anteriores, ya que al principio no pude hacer que funcionara:

activity_main.xml:

<?xml version="1.0" encoding="utf-8"?> <ListView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:id="@android:id/list" > </ListView>

MainActivity.java:

@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); addPreferencesFromResource(R.xml.preferences);

preferences.xml:

<?xml version="1.0" encoding="utf-8"?> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" > <PreferenceCategory android:key="upgradecategory" android:title="Upgrade" > <Preference android:key="download" android:title="Get OnCall Pager Pro" android:summary="Touch to download the Pro Version!" /> </PreferenceCategory> </PreferenceScreen>


Otra cosa que me afectó: si tiene varios dispositivos de prueba, asegúrese de realizar cambios en el diseño utilizado por el dispositivo. En mi caso, pasé un tiempo realizando cambios en xmls en el directorio de "diseño" hasta que descubrí que mi teléfono más grande (que cambié a la mitad de las pruebas) estaba usando xmls en el directorio "layout-sw360dp". Grrr!


<ListView android:id="@android:id/list" android:layout_width="fill_parent" android:layout_height="fill_parent"/>

Esto debería solucionar tu problema


<ListView android:id="@id/android:list" android:layout_width="fill_parent" android:layout_height="wrap_content" android:drawSelectorOnTop="false" android:scrollbars="vertical"/>