Asistencia de vista de lista
Frecuentes
Visto 348 veces
2
Estoy trabajando en un proyecto en la escuela y necesito ayuda para implementar ListViews
adecuadamente. Tengo que hacer las secciones de Configuración y Ayuda en el proyecto y, a partir de ahora, puedo mostrar lo que hay en mi lista y se muestra Toast
mensajes del elemento seleccionado cuando hago clic en él. Mi pregunta es, ¿cómo puedo crear y mostrar el contenido que está dentro de ese elemento específico? Por ejemplo, tengo una opción. "Edit Password"
y que cuando hago clic en él, debería mostrar mi "Edit Password"
pantalla. Esto se aplica a mis dos secciones.
Esto es lo que tengo hasta ahora. básicamente es el androide ListView
tutorial pero agregué mis opciones allí. Mi pregunta es, cuando hago clic en una de las opciones de mi lista, ¿cómo puedo mostrar sus detalles específicos? Como lo que dije antes, si hago clic "Edit Password"
, quiero que vaya a un "Edit Password"
pantalla. O en Ayuda, si hago clic, digamos, "Créditos", quiero que me dirija a la página de Créditos.
public class Settings extends ListActivity {
/** Called when the activity is first created. */
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setListAdapter(new ArrayAdapter<String>(this, R.layout.settings, SETTINGS));
ListView lv = getListView();
lv.setTextFilterEnabled(true);
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id)
{
// When clicked, show a toast with the TextView text
Toast.makeText(getApplicationContext(), ((TextView) view).getText(),
Toast.LENGTH_SHORT).show();
}
});
}
static final String[] SETTINGS = new String[]
{"Set Refresh Rate", "Edit Password", "Delete Account"};
}
1 Respuestas
1
Cuando extiendes ListActivity
ya tienes el OnItemClickListener
implementado, debe anular el método onListItemClick
. En ese método debes usar un Intent
para llegar a un nuevo Activity
donde mostrarás las cosas que quieras:
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
Intent i = new Intent(this, SecondActivityName.class);
i.putExtra("pos", position); //pass the position of the clicked row so we know what to show.
startActivity(i); // let's go to the other activity
}
SeconActivityName
es un Activity
que debe crear y donde mostraría la otra pantalla que desea (¡recuerde agregar la actividad al archivo de manifiesto!):
public class SecondActivityName extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent i = getIntent();
int rowPosition = i.getIntExtra("pos", -1); //we now have the row's position that was clicked in the other activity.
// based on that you show the screen you want for example after a switch
switch (rowPosition) {
case -1:
//this is the default value, something has gone terrible wrong
//finish the activity and hide:
finish();
break;
case 0:
//row 0 was clicked so show the "Set Refresh Rate" screen
setContentView(R.layout.refresh_rate__screen);
break;
//do the same for the other rows;
//...
Esto funcionará si las pantallas para las diversas configuraciones no son tan diferentes. Si lo son, probablemente tendrá que implementar una actividad diferente para cada uno y comenzar la actividad apropiada en el onListItemClick
basado en el parámetro de posición.
contestado el 05 de mayo de 12 a las 06:05
¡Gracias! Pero... lamento decir esto, pero si quiero extender SherlockActivity en lugar de ListActivity, ¿aún se aplica? - wasabiman
Intenté esto, pero no funciona. Cuando hice clic en un elemento, se bloqueó la aplicación. - wasabiman
@wasabiman Si quieres usar ActionBarSherlock
puedes extender SherlockListActivity
entonces tienes el ActionBar
en un parche de ListActivity
(Si se extiende SherlockActivity
tendrá que proporcionar su propio diseño con un ListView
). No puedo adivinar por qué su código falla, debo ver la excepción que obtiene en el Logcat
. tambien se me olvido alguna ;
en mi código, espero que esta no sea la razón de sus fallas. - usuario
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas android android-listview or haz tu propia pregunta.
¿Qué idioma/dispositivo estás usando? - assylias
Estoy usando Eclipse para el proyecto. - wasabiman
Ok pero esto es java? C#? ¿Desarrollo de dispositivos Android? Etc. Y es poco probable que obtenga alguna respuesta si no muestra lo que ha intentado hasta ahora. Le sugiero que intente escribir un código y, una vez que se atasque, haga una pregunta específica sobre su problema específico. - assylias
Es una combinación de desarrollo de dispositivos Java y Android. - wasabiman
Lea mi comentario anterior: vuelva a publicar con detalles sobre su código y agregue las etiquetas correctas (esencialmente Android). - assylias