當然,對不起......
package com.example.cdp.mispartidas;
imports...
public class Tanteo extends ActionBarActivity {
private String identificador;
private Partida partida;
private Backup backup;
private int indice;
private static Context context;
ListView listviewjugadores;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tanteo);
// Parametros
listviewjugadores = (ListView) findViewById(R.id.jugadorestanteo);
Tanteo.context = getApplicationContext();
Log.i("MILOG", "Obtenemos el backup");
backup = Backup.getMiBackup(getApplicationContext());
// Obtenemos el numero de jugadores
Bundle bundle = getIntent().getExtras();
identificador = bundle.getString("idpartida");
Log.i("MILOG", "El identificador de la partida es " + identificador);
// Buscamos la partida
indice = backup.getPartida(identificador);
if (indice >= 0) {
partida = backup.getBackup().get(indice);
// Establecemos el adaptador
Log.i("MILOG", "Establecemos el adaptador");
AdaptadorTanteo adaptador = new AdaptadorTanteo(this, getTaskId(), partida.getJugadores());
listviewjugadores.setAdapter(adaptador);
} else {
Toast.makeText(this, "No se ha encontrado la partida " + identificador, Toast.LENGTH_SHORT).show();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_tanteo, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
int numjugadores;
switch(id){
// Anadimos un nuevo jugador a la partida
case R.id.addjugador:
numjugadores = listviewjugadores.getAdapter().getCount();
Jugador player = new Jugador();
// Ponemos un nombre por defecto
player.setNombre("Jugador" + String.valueOf(numjugadores + 1));
player.setNumerojugador(numjugadores + 1);
// Anadimos la puntuacion
player.setPuntuacion(0);
// Anadimos el jugador a la lista
partida.addJugador(player);
// Actualizamos el backup
backup.getBackup().set(indice, partida);
// Almacenamos
Log.i("MILOG", "Guardamos el backup");
backup.guardarBackup();
// Si todo ha ido bien, acutalizamos la lista de jugadores
((AdaptadorTanteo) listviewjugadores.getAdapter()).notifyDataSetChanged();
break;
case R.id.partidasguardadas:
// Llamamos al intent de nuestras partidas guardadas
Intent intenthistorial = new Intent(this, Historial.class);
startActivity(intenthistorial);
break;
case R.id.reiniciarpartida:
// Ponemos todos los marcadores a 0
// Recorremos nuestra partida
numjugadores = partida.getJugadores().size();
// recorremos y reiniciamos
for(int i = 0; i < numjugadores; i++){
partida.getJugadores().get(i).setPuntuacion(0);
}
// Actualizamos el backup
backup.getBackup().set(indice, partida);
// Almacenamos
Log.i("MILOG", "Guardamos el backup");
backup.guardarBackup();
// Si todo ha ido bien, acutalizamos la lista de jugadores
((AdaptadorTanteo) listviewjugadores.getAdapter()).notifyDataSetChanged();
break;
case R.id.action_settings:
break;
default:
return true;
}
return super.onOptionsItemSelected(item);
}
// Adaptador para el layout del listview
public class AdaptadorTanteo extends ArrayAdapter<Jugador> {
Activity context;
List<Jugador> jugadores;
ViewHolder holder;
AdaptadorTanteo(Activity context, int textViewResourceId, List<Jugador> listajugadores) {
super(context, textViewResourceId, listajugadores);
this.context = context;
this.jugadores = listajugadores;
}
public View getView(final int position, View convertView, ViewGroup parent) {
View item = convertView;
// Optimizamos el rendimiento de nuestra lista
// Si la vista no existe, la creamos
if (item == null) {
LayoutInflater inflater = context.getLayoutInflater();
item = inflater.inflate(R.layout.tanteo_jugador, null);
// Declaramos el holder pasandole nuestras vistas
TextView nombre = (TextView) item.findViewById(R.id.nombrejugador);
TextView puntuacion = (TextView) item.findViewById(R.id.puntos);
ImageButton mas = (ImageButton) item.findViewById(R.id.sumar);
ImageButton menos = (ImageButton) item.findViewById(R.id.restar);
holder = new ViewHolder(nombre, puntuacion, mas, menos);
// Establecemos el tag
item.setTag(holder);
}
// Si la vista existe, la reusamos
else {
holder = (ViewHolder) item.getTag();
}
// Guardamos la posicion en el holder para usarlo en los listener
holder.botonmas.setTag(position);
holder.botonmenos.setTag(position);
holder.puntos.setTag(position);
// Establecemos el nombre por defecto
holder.nombrejugador.setText(jugadores.get(position).getNombre());
holder.puntos.setText(String.valueOf(jugadores.get(position).getPuntuacion()));
return (item);
}
}
class ViewHolder implements NumeroTanteoDialogFragment.NumberTanteoDialogListener{
TextView nombrejugador;
TextView puntos;
ImageButton botonmas;
ImageButton botonmenos;
int position;
public ViewHolder(TextView nombre, TextView puntuacion, ImageButton mas, ImageButton menos) {
nombrejugador = nombre;
puntos = puntuacion;
botonmas = mas;
botonmenos = menos;
// Definimos los listener
nombrejugador.setOnClickListener(miListenerLocal);
puntos.setOnClickListener(miListenerLocal);
botonmas.setOnClickListener(miListenerLocal);
botonmenos.setOnClickListener(miListenerLocal);
}
// Creamos aqui los listener
// Asi tenemos acceso al resto de vistas dentro de la fila
private View.OnClickListener miListenerLocal = new View.OnClickListener() {
@Override
public void onClick(View v) {
position = (Integer) v.getTag();
// Comprobamos la vista que lo esta invocando
switch (v.getId()) {
case R.id.nombrejugador:
break;
case R.id.puntos:
try {
// Decrementamos el tanteo
Log.i("MILOG", "Modificamos el tanteo");
// Lanzamos el dialog
NumeroTanteoDialogFragment fragmento = new NumeroTanteoDialogFragment();
Bundle bundles = new Bundle();
bundles.putString("titulo", getString(R.string.sumar_puntos));
fragmento.setArguments(bundles);
Log.i("MILOG", "Mostramos el dialog para elegir el numero que queremos modificar");
FragmentManager fragmentManager = ((Activity) context).getFragmentManager();
fragmento.show(fragmentManager, "Dialogo_jugadores");
} catch (Exception ex) {
Toast.makeText(Tanteo.context, "Se produjo un error al modificar el tanteo", Toast.LENGTH_SHORT).show();
}
break;
case R.id.sumar:
try {
Log.i("MILOG", "Sumamos uno");
// Incrementamos el tanteo
int tantos = Integer.parseInt(puntos.getText().toString()) + 1;
puntos.setText(String.valueOf(tantos));
// Actualizamos el backup
partida.getJugadores().get(position).setPuntuacion(tantos);
// Actualizamos el backup
backup.getBackup().set(indice, partida);
// Almacenamos
Log.i("MILOG", "Guardamos el backup");
backup.guardarBackup();
} catch (Exception ex) {
Toast.makeText(Tanteo.context, "Se produjo un error al incrementar el tanteo", Toast.LENGTH_SHORT).show();
}
break;
case R.id.restar:
try {
// Decrementamos el tanteo
Log.i("MILOG", "Restamos uno");
int tantos = Integer.parseInt(puntos.getText().toString()) - 1;
puntos.setText(String.valueOf(puntos));
// Actualizamos el backup
partida.getJugadores().get(position).setPuntuacion(tantos);
// Actualizamos el backup
backup.getBackup().set(indice, partida);
// Almacenamos
Log.i("MILOG", "Guardamos el backup");
backup.guardarBackup();
} catch (Exception ex) {
Toast.makeText(Tanteo.context, "Se produjo un error al decrementar el tanteo", Toast.LENGTH_SHORT).show();
}
break;
}
}
};
// Sobreescribimos el metodo del dialogo para elegir el numero
@Override
public void onNumberSelected(int number) {
Log.i("MILOG", "Actualizamos los puntos con el dialog");
int puntuacion = Integer.parseInt(puntos.getText().toString()) + number;
// Modificamos los puntos
puntos.setText(String.valueOf(puntuacion));
// Actualizamos el backup
partida.getJugadores().get(position).setPuntuacion(puntuacion);
// Actualizamos el backup
backup.getBackup().set(indice, partida);
// Almacenamos
Log.i("MILOG", "Guardamos el backup");
backup.guardarBackup();
}
}
}
1)您在適配器中定義onClick偵聽器。 2)發佈您的代碼。 3)發佈您的代碼。 –