Besoin de conseils de vos experts là-bas. Je viens de commencer avec Android programmation et même si j'ai finalement obtenu ce que je veux faire de mon "Hello World", je me sens comme si je me frayais un chemin à travers plutôt que de saisir des concepts.Quelle est la meilleure façon de transmettre des ressources?
J'ai créé trois zones EditText. En dessous de ceux que j'ai créés trois Spinners. Choisissez un numéro dans le Spinner et il apparaîtra dans la zone EditText correspondante. Spinner 1 est corrélé à EditText 1, Spinner 2 à EditText 2 et Spinner 3 à EditText 3. J'ai eu un sacré bon moment pour que cela fonctionne. J'ai quelques nettoyage à faire.
Dans ma classe de démarrage I:
EditText [] pick_nums = new EditText[3];
pick_nums[0] = (EditText) findViewById(R.id.r1c1);
pick_nums[1] = (EditText) findViewById(R.id.r1c2);
pick_nums[2] = (EditText) findViewById(R.id.r1c3);
Spinner test1 = (Spinner) findViewById(R.id.spin_pick_num1);
Spinner test2 = (Spinner) findViewById(R.id.spin_pick_num2);
Spinner test3 = (Spinner) findViewById(R.id.spin_pick_num3);
// Je crée une classe pour initialiser les filateurs. // J'ai créé une classe pour mettre le nombre dans la zone EditText correspondante. Je voulais éviter que l'utilisateur appuie sur un bouton pour faire le remplissage et une fois que trois numéros sont dans je vais faire quelque chose avec eux sans avoir à appuyer sur un bouton.
Handle_Picks hp = new Handle_Picks(g, pick_nums);
// Voici où je pense que ça devient kludgy et maladroit. Pour que Handle_Picks fonctionne correctement j'ai créé une méthode pour définir le contexte, un tableau de EditTexts, et la référence à la classe Handle_Picks hp.
Spinner_Listener listen = new Spinner_Listener();
listen.set_context(g, pick_nums, hp);
test1.setOnItemSelectedListener(listen);
test2.setOnItemSelectedListener(listen);
test3.setOnItemSelectedListener(listen);
// Dans la classe Spinner_Listener
public class Spinner_Listener implements OnItemSelectedListener
static Handle_Picks hp1; //set in a method
private String num;
String v;
String spin_id;
int vv;
public void onItemSelected(AdapterView<?> parent, View view, int pos,
long id)
{
//To make this work I had to find the name of the spinner that was
//used so I could correlate it with the right EditText
vv = parent.getId();
v = parent.getResources().getResourceName(vv);
spin_id = parent.getResources().getResourceEntryName(vv);
setNum(parent.getItemAtPosition(pos).toString());
}
public void setNum(String s)
{
num = s;
hp1.handle_nums(spin_id, num);
}
// enfin en classe Handle_Picks I:
public class Handle_Picks extends Activity
{
static Context theContext;
EditText [] et;
String spin_num;
// constructor
Handle_Picks(Context f, EditText[] array)
{
theContext = f;
et = array;
}
public void handle_nums(String id, String aNumber)
{
spin_num = id;
if (spin_num.equalsIgnoreCase("spin_pick_num1"))
et[0].setText(aNumber);
else if (spin_num.equalsIgnoreCase("spin_pick_num2"))
et[1].setText(aNumber);
else if (spin_num.equalsIgnoreCase("spin_pick_num3"))
et[2].setText(aNumber);
}
Y at-il une meilleure façon de passer ou de ressources de référence autour de différentes classes? Doit passer le contexte et le tableau de EditText à la classe Handle_Picks avant de pouvoir utiliser Handle_Picks de la classe Spinner_Listener ne semble pas correct. Semble un peu dangereux.
Quelle est la meilleure façon?