2010-10-28 4 views
0

Je dois faire un jeu de cartes mémo dans Android pour mon projet. Pour l'instant, je suis à l'étape où j'essaie de comprendre la forme de base de mon application. J'ai lu quelques tutoriels, mais je peux comprendre comment modifier beaucoup de boutons créés dynamiquement (par exemple dans la boucle 'for'), à partir de xml, ou même à partir du code. Pour rendre ma question claire est le code ici je l'ai faitComment modifier le comportement de ToggleButton avec ou sans xml dans Android

package piotrek.test1; 



import android.app.Activity; 
import android.graphics.Color; 
import android.os.Bundle; 
import android.view.*; 
import android.widget.*; 
import java.util.ArrayList; 
import java.util.*; 


public class test1 extends Activity implements View.OnClickListener { 

private ArrayList<Integer> listaKart = new ArrayList<Integer>();  
private int rozmiar = 0;  
private int licznik = 0; 


@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    TworzKarty(); 
    //tu tworzymy definicje nowego wygladu (layout) czyli w formie tabeli 

    TableLayout layout = new TableLayout (this); 
    layout.setLayoutParams(new TableLayout.LayoutParams(4,5)); 

    //ustawienie odstepow do 'scian' 

    layout.setPadding(10,10,10,10); 

    //petle 'populujace' miejsca w tabeli przyciskami 

    for (int f=0; f<=5; f++) { 
     TableRow tr = new TableRow(this); 
     for (int c=0; c<=4; c++) { 
      ToggleButton b = new ToggleButton (this); 
      //b.setText(""+f+c); 
      b.setText(Integer.toString(listaKart.get(licznik))); 
      b.setTextSize(10.0f); 
      b.setTextColor(Color.rgb(100, 200, 200)); 
      b.setOnClickListener(this); 
      tr.addView(b, 60,60); 
      licznik++; 
     } // for 
     layout.addView(tr); 
    } // for 

    super.setContentView(layout); 
} //() 


public void TworzKarty(){ 

for (int i=0;i<=14;i++){ 
    this.listaKart.add(i); 
    this.listaKart.add(i); 
} 
//pomieszanie kolejnosci numerków 
Collections.shuffle(listaKart); 
rozmiar=listaKart.size(); 


} 



public void onClick(View view) { 
//((Button) view).setText("*"); 
//((Button) view).setEnabled(false); 
if (((ToggleButton) view).isChecked()) { 
    Toast.makeText(test1.this, Integer.toString(rozmiar), Toast.LENGTH_SHORT).show(); 
} 
else { 
    Toast.makeText(test1.this, "Not checked", Toast.LENGTH_SHORT).show(); 
} 
} 




} // class 

Que se passe quand j'exécuter l'application est, que j'ai 30 ToggleButtons sur l'écran, chacun d'eux a une forme de numéro 0 à 14 (15 paires) . C'est ce que je voulais avoir, mais quand j'appuie sur l'un des boutons en plus de montrer le bouton toast, les changements de texte forment ce que je veux qu'il soit sur ON puis après une autre pression sur OFF. Je n'arrive pas à comprendre comment contrôler ce comportement - j'apprécierais vraiment quelques conseils sur la façon de réaliser cela strictement en code ou en utilisant xml. Un autre cas est comment utiliser xml pour définir une telle mise en page et aléatoire de l'ensemble de texte sur les boutons.

+0

'import android.view. *;' Compile-t-il vraiment lorsque vous faites cela? Je pensais que vous ne pouviez pas faire des importations génériques – Falmarri

Répondre

1

Si vous ajoutez

b.setTextOff(Integer.toString(listaKart.get(licznik))); 
b.setTextOn(Integer.toString(listaKart.get(licznik))); 

à votre boucle intérieure pour(), les boutons toujours afficher leur position dans la liste, que ce soit activée ou désactivée.

+0

Merci beaucoup, je savais que cela devait être quelque chose de simple, mais je ne pouvais pas le comprendre par moi-même. Cela fonctionne parfaitement, et me laisse l'espace pour de futures modifications pour le but du jeu. – Piotrgo

Questions connexes