Android Studio - Generate a single Dynamic ListView

1

Good morning,

My question is this, I have a Database with a table "Books" to which I loaded about 10 books at random, with their respective fields. One of those fields is the genre of the book (horror, romance, etc). What I have then is a ListView with the different genres of Books. What I have to do is that, when I click on an item in this list, for example, "Terror" sends me to another activity with another List with the names of the Books of Terror. If I click "comedy" the same but you enliste the books whose genre is comedy.

What I did, which works but I think is not the most correct, is to create a different activity for each gender I have, each activity with its respective ListView and books that correspond to the genre (Terror list, Romanian list, Comedy list, etc), and simply when I touch an item in the Gender list, send me to the activity with its corresponding list.

Then I would need to know if you can help me find some more performant way, so that I do not have to create an activity for each genre that you want to list your books. For example something like, if in genre list I play "terror" that sends me to an activity and shows me in a ListView horror books, but if I play "drama" that this ListView shows me the list of drama books.

Database:

public class BaseDeDatos extends SQLiteOpenHelper {

public BaseDeDatos(Context context) {
    super(context, "libros.db", null, 1);
}

@Override
public void onCreate(SQLiteDatabase db) {
    db.execSQL("CREATE TABLE IF NOT EXISTS libros (Id integer primary key autoincrement, Titulo text, Autor text, Sinopsis text, FechaDePublicacion text, Editorial text, CantidadDePaginas text, Idioma text, Generos text)");
    db.execSQL("insert into libros values" +
            "(1, 'El Resplandor', 'Stephen King', '¿Qué ha sido de Danny Torrance? Descúbrelo al final de este volumen, que incluye el inicio de Doctor Sueño, la continuación de El resplandor. REDRUM. Esa es la palabra que Danny había visto en el espejo. Y, aunque no sabía leer, entendió que era un mensaje de horror. Tenía cinco años, y a esa edad pocos niños son conscientes de que los espejos invierten las imágenes, y menos aún diferencian entre realidad y fantasía. Pero Danny tenía pruebas de que sus fantasías relacionadas con el resplandor del espejo acabarían cumpliéndose: REDRUM... MURDER, asesinato. Su madre estaba pensando en el divorcio, y su padre, obsesionado con algo muy malo, tan malo como la muerte y el suicidio, necesitaba aceptar la propuesta de cuidar de aquel hotel de lujo, de más de cien habitaciones aislado por la nieve, durante seis meses. Hasta el deshielo iban a estar solos. ¿Solos?...', '28-01-1977', 'Doubleday', '447', 'Ingles', 'Terror')" +
            "(2, 'Forbidden', 'Tabitha Suzuma', 'No podemos. Si empezamos, ¿cómo vamos a pararlo? Lochan y Maya siempre se han sentido más amigos que hermanos. Ante la incapacidad de cuidarlos de su madre alcohólica y la ausencia de un padre que los abandonó, los dos jóvenes deben hacerse cargo de sus tres hermanos menores y esconder su situación a los servicios sociales, porque ninguno de los dos es mayor de edad. La responsabilidad que comparten y las dificultades a las que se enfrentan les unen, hasta empujarlos a enamorarse. Ambos saben que su relación está mal y que no debe continuar, pero al mismo tiempo no pueden controlar sus emociones y la atracción que los domina.', '10-05-2010', 'OZ', '387', 'Español', 'Ficción') " +
            "(3, 'Cazadores de Sombras', 'Harald Zwart', 'En la ciudad de Nueva York, una adolescente aparentemente común llamada Clary Fray descubre que ella desciende de una línea de guerreros, mitad ángeles, quienes protegen a la humanidad de los demonios. Después de que su madre desaparece, Clary une fuerzas con un grupo de cazadores de sombras e ingresa al Inframundo, un sitio peligroso y alterno lleno de demonios, brujos, vampiros, hombres lobo y criaturas sobrenaturales.', '22-07-2013', 'Simon & Schuster', '948', 'Español', 'Ficción') " +
            "(4, 'Beautiful Disaster', 'Jamie McGuire', 'La chica buena Abby no bebe, no se mete en líos y trabaja muy duro. Cree que ha enterrado su oscuro pasado, pero cuando llega a la universidad, un rompecorazones conocido por sis ligues de una noche pone en peligro su sueño de una nueva vida. El chico malo Travis Maddox , sexy, musculoso y cubierto de tatuajes, es justamente el tipo de chico que le atrae a Abby, justamente lo que quiere evitar. Dedica sus noches a ganar dinero en un club de lucha itinerante y sus dias a ser el estudiante ejemplar y el seductor mas popular del campus. Toda una mezcla explosiva. Intrigado por el rechazo de Abby, Travis intenta colarse en su vida proponiendole una apuesta que trastocará sus mundos y lo cambiará todo.', '26-05-2011', 'Simon & Schuster', '567', 'Ingles', 'Romance') " +
            "(5, 'Hush Hush', 'Becca Fitzpatrick', 'Cuando Patch se convierte en su nuevo compañero de laboratorio de biología, Nora siente a la vez atracción y repulsión hacia este extraño personaje que parece tener acceso a sus pensamientos. Luego se entera de que Patch es un ángel caído que quiere convertirse en humano.', '13-10-2009', 'Ediciones B', '647', 'Ingles', 'Romance') " +
            "(6, 'Los juegos del hambre', 'Collins Suzanne', 'En lo que alguna vez fue Norteamérica, la Capital de Panem mantiene sus 12 distritos obligándolos a seleccionar a un niño y a una niña, llamados Tributos, a competir en un evento televisado nacionalmente llamados Juegos del Hambre. Cada ciudadano debe ver pelear a muerte a los jóvenes. El Trbuto del Distrito 12, Katniss Everdeen sólo confía en sus habilidades de caza y buenos instintos en una arena en donde debe sobrevivir contra la humanidad.', '14-09-2008', 'Rba-Molino', '847', 'Español', 'Fantasía') " +
            "(7, 'Misery', 'Stephen King', 'Un autor se recupera de un accidente y es cuidado por una admiradora que le insiste escribir un libro sólo para ella.', '08-06-1987', 'Viking Press', '320', 'Ingles', 'Terror') " +
            "(8, 'Oscuros', 'Kate Lauren', 'La historia de Daniel y Luce, dos almas predestinadas a encontrarse y condenadas a perderse... Helstone, Inglaterra, 1854. Es noche cerrada y dos jóvenes conversan en una remota casa de campo. Se sienten irresistiblemente atraídos el uno por el otro, pero él insiste en que no pueden estar juntos.', '08-12-2009', 'Penguin Random House', '416', 'Ingles', 'Drama') " +
            "(9, 'Eleanor & Park', 'Rowell Rainbow', 'Dos chicos de un colegio, que se conocen por una situación fortuita en el autobús escolar, haciendo que de poco a poco su amistad vaya evolucionando en algo más. Pero no todo en la vida es fácil, al final, los dos protagonistas tendrán que luchar por mantenerse juntos, he impedir que el padrastro de Eleanor los separen para siempre.', '07-10-2012', 'Aguilar', '333', 'Ingles', 'Romance') " +
            "(10, 'El amante japonés', 'Isabel Allende', 'La historia de amor entre la joven Alma Belasco y el jardinero japonés Ichimei conduce al lector por un recorrido a través de diversos escenarios que van desde la Polonia de la Segunda Guerra Mundial hasta el San Francisco de nuestros días «A los veintidós años, sospechando que tenían el tiempo contado, Ichimei y Alma se atragantaron de amor para consumirlo entero, pero mientras más intentaban agotarlo, más imprudente era el deseo, y quien diga que todo fuego se apaga solo tarde o temprano, se equivoca: hay pasiones que son incendios hasta que las ahoga el destino de un zarpazo y aun así quedan brasas calientes listas para arder apenas se les da oxígeno.', '22-05-2015', 'Plaza & Janés', '725', 'Español', 'Drama') ");
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    db.execSQL("DROP TABLE IF EXISTS libros");
    db.execSQL("CREATE TABLE IF NOT EXISTS libros (Id integer primary key autoincrement, Titulo text, Autor text, Sinopsis text, FechaDePublicacion text, Editorial text, CantidadDePaginas text, Idioma text, Generos text)");
    db.execSQL("insert into libros values" +
            "(1, 'El Resplandor', 'Stephen King', '¿Qué ha sido de Danny Torrance? Descúbrelo al final de este volumen, que incluye el inicio de Doctor Sueño, la continuación de El resplandor. REDRUM. Esa es la palabra que Danny había visto en el espejo. Y, aunque no sabía leer, entendió que era un mensaje de horror. Tenía cinco años, y a esa edad pocos niños son conscientes de que los espejos invierten las imágenes, y menos aún diferencian entre realidad y fantasía. Pero Danny tenía pruebas de que sus fantasías relacionadas con el resplandor del espejo acabarían cumpliéndose: REDRUM... MURDER, asesinato. Su madre estaba pensando en el divorcio, y su padre, obsesionado con algo muy malo, tan malo como la muerte y el suicidio, necesitaba aceptar la propuesta de cuidar de aquel hotel de lujo, de más de cien habitaciones aislado por la nieve, durante seis meses. Hasta el deshielo iban a estar solos. ¿Solos?...', '28-01-1977', 'Doubleday', '447', 'Ingles', 'Terror')" +
            "(2, 'Forbidden', 'Tabitha Suzuma', 'No podemos. Si empezamos, ¿cómo vamos a pararlo? Lochan y Maya siempre se han sentido más amigos que hermanos. Ante la incapacidad de cuidarlos de su madre alcohólica y la ausencia de un padre que los abandonó, los dos jóvenes deben hacerse cargo de sus tres hermanos menores y esconder su situación a los servicios sociales, porque ninguno de los dos es mayor de edad. La responsabilidad que comparten y las dificultades a las que se enfrentan les unen, hasta empujarlos a enamorarse. Ambos saben que su relación está mal y que no debe continuar, pero al mismo tiempo no pueden controlar sus emociones y la atracción que los domina.', '10-05-2010', 'OZ', '387', 'Español', 'Ficción') " +
            "(3, 'Cazadores de Sombras', 'Harald Zwart', 'En la ciudad de Nueva York, una adolescente aparentemente común llamada Clary Fray descubre que ella desciende de una línea de guerreros, mitad ángeles, quienes protegen a la humanidad de los demonios. Después de que su madre desaparece, Clary une fuerzas con un grupo de cazadores de sombras e ingresa al Inframundo, un sitio peligroso y alterno lleno de demonios, brujos, vampiros, hombres lobo y criaturas sobrenaturales.', '22-07-2013', 'Simon & Schuster', '948', 'Español', 'Ficción') " +
            "(4, 'Beautiful Disaster', 'Jamie McGuire', 'La chica buena Abby no bebe, no se mete en líos y trabaja muy duro. Cree que ha enterrado su oscuro pasado, pero cuando llega a la universidad, un rompecorazones conocido por sis ligues de una noche pone en peligro su sueño de una nueva vida. El chico malo Travis Maddox , sexy, musculoso y cubierto de tatuajes, es justamente el tipo de chico que le atrae a Abby, justamente lo que quiere evitar. Dedica sus noches a ganar dinero en un club de lucha itinerante y sus dias a ser el estudiante ejemplar y el seductor mas popular del campus. Toda una mezcla explosiva. Intrigado por el rechazo de Abby, Travis intenta colarse en su vida proponiendole una apuesta que trastocará sus mundos y lo cambiará todo.', '26-05-2011', 'Simon & Schuster', '567', 'Ingles', 'Romance') " +
            "(5, 'Hush Hush', 'Becca Fitzpatrick', 'Cuando Patch se convierte en su nuevo compañero de laboratorio de biología, Nora siente a la vez atracción y repulsión hacia este extraño personaje que parece tener acceso a sus pensamientos. Luego se entera de que Patch es un ángel caído que quiere convertirse en humano.', '13-10-2009', 'Ediciones B', '647', 'Ingles', 'Romance') " +
            "(6, 'Los juegos del hambre', 'Collins Suzanne', 'En lo que alguna vez fue Norteamérica, la Capital de Panem mantiene sus 12 distritos obligándolos a seleccionar a un niño y a una niña, llamados Tributos, a competir en un evento televisado nacionalmente llamados Juegos del Hambre. Cada ciudadano debe ver pelear a muerte a los jóvenes. El Trbuto del Distrito 12, Katniss Everdeen sólo confía en sus habilidades de caza y buenos instintos en una arena en donde debe sobrevivir contra la humanidad.', '14-09-2008', 'Rba-Molino', '847', 'Español', 'Fantasía') " +
            "(7, 'Misery', 'Stephen King', 'Un autor se recupera de un accidente y es cuidado por una admiradora que le insiste escribir un libro sólo para ella.', '08-06-1987', 'Viking Press', '320', 'Ingles', 'Terror') " +
            "(8, 'Oscuros', 'Kate Lauren', 'La historia de Daniel y Luce, dos almas predestinadas a encontrarse y condenadas a perderse... Helstone, Inglaterra, 1854. Es noche cerrada y dos jóvenes conversan en una remota casa de campo. Se sienten irresistiblemente atraídos el uno por el otro, pero él insiste en que no pueden estar juntos.', '08-12-2009', 'Penguin Random House', '416', 'Ingles', 'Drama') " +
            "(9, 'Eleanor & Park', 'Rowell Rainbow', 'Dos chicos de un colegio, que se conocen por una situación fortuita en el autobús escolar, haciendo que de poco a poco su amistad vaya evolucionando en algo más. Pero no todo en la vida es fácil, al final, los dos protagonistas tendrán que luchar por mantenerse juntos, he impedir que el padrastro de Eleanor los separen para siempre.', '07-10-2012', 'Aguilar', '333', 'Ingles', 'Romance') " +
            "(10, 'El amante japonés', 'Isabel Allende', 'La historia de amor entre la joven Alma Belasco y el jardinero japonés Ichimei conduce al lector por un recorrido a través de diversos escenarios que van desde la Polonia de la Segunda Guerra Mundial hasta el San Francisco de nuestros días «A los veintidós años, sospechando que tenían el tiempo contado, Ichimei y Alma se atragantaron de amor para consumirlo entero, pero mientras más intentaban agotarlo, más imprudente era el deseo, y quien diga que todo fuego se apaga solo tarde o temprano, se equivoca: hay pasiones que son incendios hasta que las ahoga el destino de un zarpazo y aun así quedan brasas calientes listas para arder apenas se les da oxígeno.', '22-05-2015', 'Plaza & Janés', '725', 'Español', 'Drama') ");
}

}

Genre List:

public class ListaCategorias extends AppCompatActivity implements ListView.OnItemClickListener{

ListView listaCat;
ArrayAdapter<String> adaptador;

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

  ArrayList generos = new ArrayList<>();
    generos.add("Terror");
    generos.add("Ficción");
    generos.add("Romance");
    generos.add("Fantasía");
    generos.add("Drama");

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

}

}

    
asked by Rodrigo 17.12.2018 в 20:11
source

1 answer

1

What you can do is make yourself a new cursor and make a query according to the books of each gender, a query that occurs to me would be:

private List<Modelo> modeloLista = new ArrayList<>();
public List<Modelo> getBooks(String genero) {
       Modelo modelo;
       cursor = db.rawQuery("SELECT * FROM libros WHERE Generos = ?, String[]{genero});
       while (cursor.moveToNext()){
            modelo = new Modelo();
            modelo.setId(cursor.getInt(0);
            modelo.setTitulo(cursor.getInt(1);
            ......
            modeloLista.add(modelo);
       }

       db.close();
       cursor.close();
       return modeloLista;
}

This way you would add each book of each gender in a List and you give it to the Adapter to add them to the ListView, with that you do not need to be creating new Activities for each one. You are only going to create a single view to show the genres.

    
answered by 18.12.2018 в 22:35