Asistencia de vista de lista

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"};

}

preguntado el 03 de mayo de 12 a las 18:05

¿Qué idioma/dispositivo estás usando? -

Estoy usando Eclipse para el proyecto. -

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. -

Es una combinación de desarrollo de dispositivos Java y Android. -

Lea mi comentario anterior: vuelva a publicar con detalles sobre su código y agregue las etiquetas correctas (esencialmente Android). -

1 Respuestas

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 or haz tu propia pregunta.