0 votos
Saludo cordial!
Solicítole su ayuda, gran gurú de estos espíritus andródinos... que sufriendo por mi ignorancia, mi terco espíritu no quiere abandonar.

*Solo necesito que al hacer click sobre un capítulo (ListView, miLista) este me inicie su respectiva
Activity. Ej., Capitulo1.java, Capitulo2.java, etc... (estaba usando el " if " o se podria un switch).

Aqui tengo todo el sencillo código.
Le agradeceria muchísimo gran guru!

Java: (MainActivity)

package com.prueba.listas_jap_01;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.Toast;
public class MainActivity extends Activity {

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

registrarEventos();

}

    private void registrarEventos(){

    //// selecciona la lista en pantalla segun su ID
    ListView lista1 = (ListView) findViewById(R.id.miLista);

    //// registra una accion para el evento click
    lista1.setOnItemClickListener(new AdapterView.OnItemClickListener() {

    @Override
    public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {

    ///// Obtiene el valor de la casilla elegida
    String itemSeleccionado = adapterView.getItemAtPosition(i).toString();

    //// muestra el   item seleccionado.
Toast.makeText( getApplicationContext(), "Tema seleccionado: " + itemSeleccionado,
Toast.LENGTH_SHORT).show();

//// Implementar otras acciones más concretas.

 

/// NO HE PODIDO implementar...
if (itemSeleccionado == "0")
{
Toast.makeText(getApplicationContext(), "'Integer !",
Toast.LENGTH_SHORT).show();
return;
}
if ( itemSeleccionado == "Capítulo I")
{
Toast.makeText(getApplicationContext(), "'String !",
Toast.LENGTH_SHORT).show();
return;
}

---
---
---

//===================================

strings.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="app_name">Listas jap 01</string>
    <string name="hello_world">Esta es la plantilla (501 KB !)</string>

<string name="mnu1">Menú 1</string>
<string name="mnu2">Menú 2</string>
<string name="paises">Paises</string>

<string-array name="capitulos">
    <item>Capítulo I</item>
    <item>Capítulo II</item>
    <item>Capítulo III</item>
    <item>Capítulo IV</item>
    <item>Capítulo V</item>
    <item>Capítulo VI</item>
    <item>Capítulo VII</item>
    <item>Capítulo VIII</item>
    <item>Capítulo IX</item>
    <item>Capítulo X</item>
    <item>Capítulo XI</item>
    <item>Capítulo XII</item>
    <item>Capítulo XIII</item>
    <item>Capítulo XIV</item>
    <item>Capítulo XV</item>

 </string-array>
 
</resources>

//===================================

layout:
activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="${relativePackage}.${activityClass}" >

<ListView
        android:id="@+id/miLista"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:dividerHeight="0.1sp"
        android:divider="#29C61E"
        android:entries="@array/capitulos"  />
</RelativeLayout>

//===================================
preguntado por Jever A. Jul 28, 2016 en Aplicaciones Móviles
editado por Jever A. Jul 28, 2016

1 Respuesta

0 votos

Hola Jever, ante todo gracias por los ánimos y ánimo que aprenderás rápido :)

Para lo que necesitas es iniciar un Activity nuevo cada vez que se pulse en un elemento del listado. Hay varias maneras de hacerlo, yo guardaría en un Map de Java (tienes ejemplos en http://jarroba.com/map-en-java-con-ejemplos/) el id del elemento del listado como clave y el apuntador al Activity que fuera a abrir, para en el momento de pulsar el elemento del listado (en el onItemClick al que le llega el id del elemento pulsado), buscarlo en en dicho Map. Luego se abriría el Activity correspondiente cada vez que se pulsara un elemento de la manera normal (más información de iniciar Activities en http://jarroba.com/activity-entender-y-usar-una-actividad/). Puedes hacer algo como (es seudocódigo, para que se entienda la idea, lo he montado sin compilar):

//Map para guardar las Activies cuya key es el id del elemento pulsado
private Map<long, Class<?>> mapaDeActivities = new HashMap<long, Class<?>>();
mapaDeActivities.put(1, ActivityA.class);
mapaDeActivities.put(2, ActivityB.class);


// Cuando se haga click en un elemento
public void onItemClick(AdapterView<?> parent, View view, int position, long id){
    Class<?> miClase = mapaDeActivities.get(id)
    
    Intent intent = new Intent(this, miClase);
    startActivity(intent);
}

 

respondido por Ramon [Admin] Ago 7, 2016