Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android

Respuesta
 
Herramientas
  #1  
Viejo 22/02/15, 17:29:55
Array

[xs_avatar]
himorino himorino no está en línea
Usuario poco activo
 
Fecha de registro: feb 2015
Mensajes: 14
Tu operador: Movistar

Problema con adaptador en java

Hola buenas, estoy haciendo mi 1º aplicación por mi cuenta y me he topado con 1 problema:

La idea de la aplicacion es sencilla, hacer una aplicacion de tipo quiz.

Se trata de un textview y luego un listview, en el textview quiero aparecera la pregunta, en el listview las respuestas.

Lo que quiero hacer es que cuando selecciones 1 opcion, le saldra un toast en plan acertaste o no, y a continuación, cambiar los datos mostrados en el textview y el listview por la 2º pregunta y respuestas, ahi es donde me falla.

Mi problema esta en que creo que no entiendo bien los adaptadores, ya que ahi me indica el fallo, como debo hacer para que rellenar de nuevo el adaptador con datos diferentes?

Nota: Se que no esta nada optimizado pero preferia hacerlo asi y una vez me funcionara ir cambiando cosas.

Como aqui puede ser muy incomodo de leer, subi el archivo java a la nube, que es mas sencillo de ver en android studio:

http://goo.gl/pcqHLs (enlace a mega)

Dejo el codigo completo comentado:

package com.example.nayime.myapplication;

import android.content.Intent;
import android.content.res.Resources;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;


public class primeratandapreguntas extends ActionBarActivity {

private TextView pregunta;
private ListView listapreguntas;
private int control = 1;//Este se encarga de que cada vez que hago todo sube uno y al llegar a 6 abro la siguiente activity
private int evaluacion = 0;//Le cambio el valor segun la pregunta, para averigurar si es verdad
private int acumulador = 0;//Almacena el numero de aciertos

@override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_primeratandapregu ntas);
//localizo los controles
listapreguntas = (ListView) findViewById(R.id.listview1);
pregunta = (TextView) findViewById(R.id.preguntaprimacti);
//Pongo el texto de inicio
pregunta.setText("Pregunta numero "+control+" : ¿Como se llama el anime en el que aparece Lelouch?");
//Creo un String
final String[] datos =
new String[]{"Elfen Lied", "El señor de los anillos", "Code Geass", "Bokurano"};
evaluacion = 2;//Como la respuesta correcta es la 3º, sabiendo que el 3º valor es 2 en el array
//Creo el adaptador y le paso los datos
final ArrayAdapter<String> adaptador =
new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, datos);
//Inicializo el adaptador? No lo tengo claro
listapreguntas.setAdapter(adaptador);
control++;//Incremento la variable de control

listapreguntas.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> a, View v, int position, long id) {
//Registro que pulsa, recupero la posicion que pulso y la comparo si es correcta sumo y sino nada, tambien pondre un toast para decir que acerto o no mas adelante
int cable = (int) listapreguntas.getItemAtPosition(position);
if (cable == evaluacion) {
//hacer el toast diciendo que acerto la pregunta.
acumulador++;

} else {
//hacer toast de que fallo la pregunta.
}
//Aqui cuando tras pular el boton llegue a 6, saltare a la siguiente activity, sino repito el mismo ciclo
if (control < 6) {
// Hago un case para seleccionar la opcion, aqui es donde lo hago mal.
//Lo que quiero hacer es cambiar lo que muestra el TextView y el ListView cada vez que pulsa el boton
switch (control){
case 2:
pregunta.setText("Pregunta numero "+control+" : ¿Quién es Kira Yamato??");
final String[] datos =
new String[]{"Dios", "Protagonista de Gundam Seeds", "No existe", "Protagonista de Heroic Age"};
evaluacion = 3;
listapreguntas.setAdapter(adaptador);
control++;
break;
//Aqui no me da fallo
case 3:
pregunta.setText("Pregunta numero "+control+" : ¿Quién es Loquesea??");
final String[] datos = {"Diodfas", "Protagonista de Gundam Sedadfaeds", "No exdafiste", "Prdddotagonista de Heroic Age"};
//Me marca en rojo datos y me dice "Variable 'datos' is already defined.
evaluacion = 2;
listapreguntas.setAdapter(adaptador);
control++;
break;
case 4:
pregunta.setText("Pregunta numero "+control+" : ¿Quién es Loqueseacase4??");
final String[] datos = {"Dioddfas", "Protagaddonista de Gundam Sedadfaeds", "No ddexdafiste", "Prdddotagdfasonista de Heroic Age"};
//Me marca en rojo datos y me dice "Variable 'datos' is already defined.
evaluacion = 0;
listapreguntas.setAdapter(adaptador);
control++;
break;
case 5:
pregunta.setText("Pregunta numero "+control+" : ¿Quién es Loqueseacase5??");
final String[] datos = {"Dioddffas", "Protagonista de Gundam Sedfffadfaeds", "No exdafisffffte", "Prdddotagdonista de Heroic Age"};
//Me marca en rojo datos y me dice "Variable 'datos' is already defined.
evaluacion = 1;
listapreguntas.setAdapter(adaptador);
control++;
break;

}

} else {
Intent intentprimati = new Intent(primeratandapreguntas.this, segundatanda.class);
//falta ojo
//Creamos la información a pasar entre actividades
Bundle b = new Bundle();
b.putInt("acumulador", acumulador);

//Añadimos la información al intent
intentprimati.putExtras(b);

//Iniciamos la nueva actividad
startActivity(intentprimati);
}

}
});




}



}

Última edición por himorino Día 22/02/15 a las 17:37:03.
Responder Con Cita


  #2  
Viejo 22/02/15, 17:45:51
Array

[xs_avatar]
kriogeN kriogeN no está en línea
Colaborador/a
· Votos compra/venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Tu operador: Vodafone
La misión del Adapter es crear las Views que vas a usar en el ListView y rellenarlas de contenido, a ser posible usando reciclado. Se ve mucho más claro en el Adapter del nuevo RecyclerView, el cual recomiendo muy por encima del antiguo ListView, al tener un sin fin de posibilidades, algunas de ellas que sólo se podían conseguir con librerías externas, como un ListView Horizontal con reciclado.

Básicamente tienes que hacer que el Adapter lea de alguna fuente de datos, y que su número de elementos y su contenido dependa de esa fuente de datos. Si luego quieres modificar el contenido lo único que tienes que hacer es modificar los elementos de la fuente de datos y llamar a notifyDataSetChanged() y el contenido cambiará automáticamente.
Responder Con Cita
  #3  
Viejo 22/02/15, 18:02:23
Array

[xs_avatar]
himorino himorino no está en línea
Usuario poco activo
 
Fecha de registro: feb 2015
Mensajes: 14
Tu operador: Movistar

Pero lo que me comentas tendria que hacer la aplicacion compilada con la API de Android L no? Lo estoy haciendo para 4.0.3 Ice Cream Sandwich en adelante.
Responder Con Cita
  #4  
Viejo 22/02/15, 18:53:10
Array

[xs_avatar]
kriogeN kriogeN no está en línea
Colaborador/a
· Votos compra/venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Tu operador: Vodafone
El RecyclerView es parte de la Support V7, es decir, funciona desde Android 2.1 en adelante.
Responder Con Cita
  #5  
Viejo 22/02/15, 19:26:35
Array

[xs_avatar]
himorino himorino no está en línea
Usuario poco activo
 
Fecha de registro: feb 2015
Mensajes: 14
Tu operador: Movistar

Vale gracias, pues luego buscare información acerca de el, estuve antes ojeando y lo vi solo referido a Android 5.0 por eso me asuste un poco, pero no vi apenas en español, si sabes de algun sitio donde se explique bien lo agradeceria.
Responder Con Cita
Respuesta

Estás aquí
Regresar   Portal | Indice > Todo sobre Android > Programación y Desarrollo para Android



Hora actual: 19:01:24 (GMT +2)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /