Вам нужен совет от ваших экспертов. Я только начал с Android
программирование, и в то время как я наконец получил то, что я хочу, чтобы мой "Hello World" делал, я чувствую
как будто я блещу, а не цепляюсь за понятия.
Я создал три поля EditText. Ниже тех, что я создал три спиннеры. Выберите
номер в Spinner, и он будет отображаться в соответствующем поле EditText.
Spinner 1 соотносится с EditText 1, Spinner 2 с EditText 2 и Spinner 3 с
EditText 3. У меня было чертовское время заставить это работать. У меня есть некоторые
уборка, чтобы сделать.
В моем стартапе 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);
// Я создал класс для инициализации счетчиков.
Context g = getApplicationContext();
Initialize_stuff spin1 = new Initialize_stuff(test1, g);
Initialize_stuff spin2 = new Initialize_stuff(test2, g);
Initialize_stuff spin3 = new Initialize_stuff(test3, g);
// Я создал класс, чтобы поместить число в соответствующее поле EditText.
Я хотел, чтобы пользователь не нажимал кнопку для заполнения
и как только три числа в я сделаю что-то с ними без необходимости
нажмите кнопку.
Handle_Picks hp = new Handle_Picks(g, pick_nums);
// Вот где я думаю, что это становится грязно и неловко. Чтобы заставить работать Handle_Picks
правильно я создал метод для установки контекста, массив EditTexts и
ссылка на класс 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);
// В классе 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);
}
// наконец, в классе 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);
}
Есть ли лучший способ передавать или ссылаться на ресурсы вокруг различных классов?
Необходимость передать контекст и массив EditText классу Handle_Picks
прежде чем я смог использовать Handle_Picks из класса Spinner_Listener не кажется правильным.
Кажется, опасно
Какой способ лучше?