¿Cuál es la diferencia entre @ + id / android: list y @ + id / list

Me pregunto cuál es la diferencia entre @+id/android:list y @+id/list . Sé el último que es una asignación de identificación regular, pero el primero parece diferente. ¿Qué lo hace especial?

Donde lo vi: estaba estudiando en ListView, ListAdapter y cosas por el estilo y el autor define el ListView en el archivo xml de diseño de la siguiente manera:

      

y también déjame mencionar @+id/android:empty id @+id/android:empty también.

Y también extiende la clase ListActivity .

Aquí está la fuente del artículo .

Y también lo que tengo en mente es que las preguntas son:

  1. ¿Deberíamos extender ListActivity ? Tal vez quiero una Actividad que también contiene otras Vistas.
  2. Usamos @+id/android:list solo porque ampliamos ListActivity o podemos usar la misma convención si ampliamos Activity ?

Gracias.

Los ID de recursos en Android son específicos de un paquete (lo cual es bueno, de lo contrario tendrías muchos conflictos si tu aplicación maneja varios paquetes al mismo tiempo).

@+id/list creará una ID de recurso en su aplicación (= su paquete) con el nombre “lista” y le dará una ID única. En código, eso sería R.id.list .

@android:id/list usará la “lista” de ID del paquete android (que, en código, sería android.R.id.list .

EDITAR: Necesita agregar las correcciones que David Hedlund señaló: La referencia adecuada sería @android:id/list . Además, + indica que está definiendo una nueva ID: obviamente no la necesita cuando hace referencia a algo que se definió en la API de Android.

Creo que el código de ejemplo que publicó tiene un error tipográfico, por lo que debe ser @android:id/list (sin el +). Desde el ListActivity javadoc :

su propia vista DEBE contener un objeto ListView con el id “@android: id / list”

@android:id/list es específico de ListActivity, por lo que no lo necesita si está agregando un ListView en cualquier otro tipo de actividad. Debe extender ListActivity si desea que el usuario haga más que ver la lista. Por ejemplo, puede anular ListActivity.onListItemClick para responder a los clics en un elemento de la lista.

Del mismo modo, @id/android:empty (nuevamente, sin el +), es un caso especial para ListActivity. Esto le permite especificar una vista alternativa que se debe mostrar cuando su lista esté vacía. Esa vista no se mostrará cuando se complete la lista.

en Android,

En XML: @ [paquete:] diseño / nombre de archivo

me gusta

 android:id="@+id/android:list" 

Esta es la forma estándar de referirse a una vista de lista cuando se hace referencia a listFragment o listActivity

por lo que nombre de archivo es android: list es una referencia a ListView.

navegue a res/values/ids.xml

encontrará

ListView es un grupo de vista que muestra una lista de elementos desplazables. Los elementos de la lista se insertan automáticamente en la lista mediante un Adaptador que extrae contenido de una fuente, como una consulta de matriz o base de datos, y convierte el resultado de cada elemento en una vista que se coloca en la lista.