Как использовать входы 2 отдельных счетчиков - PullRequest
0 голосов
/ 03 октября 2018

Я пытаюсь создать приложение, которое использует 2 введенные окислительно-восстановительные пары от 2 счетчиков для отображения информации о ячейке, которая может быть получена из этих химических веществ, например, что будет использоваться в качестве анода / катода, потенциал восстановления каждогополовинная реакция, ячейка и т. д.

Моя проблема в том, что я не смог найти способа принять входные данные обоих счетчиков, чтобы иметь возможность выполнять вычисления, только оба счетчика выполняют одно и то жевещь.

Мой текущий код такой:

public class MainActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener{

Spinner spinner1, spinner2;
ArrayAdapter adapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    adapter = ArrayAdapter.createFromResource(this, R.array.pairs, android.R.layout.simple_spinner_item);

    spinner1 = (Spinner) findViewById(R.id.spinner1);
    spinner1.setAdapter(adapter);
    spinner1.setOnItemSelectedListener(MainActivity.this);

    spinner2 = (Spinner) findViewById(R.id.spinner2);
    spinner2.setAdapter(adapter);
    spinner2.setOnItemSelectedListener(MainActivity.this);
}



@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
    String choice1 = parent.getItemAtPosition(position).toString();
    double first = 0;
    double second = 0;
    double anode;
    double cathode;
    if (choice1 == getResources().getString(R.string.MnO4)){
        first = 0.60;
        Toast.makeText(parent.getContext(), choice1, Toast.LENGTH_SHORT).show();
    } else if (choice1 == getResources().getString(R.string.Cl)) {
        first = 1.36;
        Toast.makeText(parent.getContext(), choice1, Toast.LENGTH_SHORT).show();
    }
    if (first > second) {
        cathode = first;
        anode = second;
    } else {
        cathode = second;
        anode = first;
    }
    double cellValue = anode - cathode;


}

@Override
public void onNothingSelected(AdapterView<?> parent) {

    }
}

Я очень новичок в Android Studio, поэтому любая помощь очень ценится.Спасибо

1 Ответ

0 голосов
/ 03 октября 2018

Я предлагаю вам использовать анонимные классы для обработки onItemSelected.Таким образом, вы можете обрабатывать выбор каждого Spinner независимо.

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    adapter = ArrayAdapter.createFromResource(this, R.array.pairs, android.R.layout.simple_spinner_item);

    spinner1 = (Spinner) findViewById(R.id.spinner1);
    spinner1.setAdapter(adapter);
    spinner1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                // Do what you need to do with spinner1 info
            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {

            }
        });



    spinner2 = (Spinner) findViewById(R.id.spinner2);
    spinner2.setAdapter(adapter);
        spinner2.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                // Do what you need to do with spinner2 info
            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {

            }
        });
}

Теперь вы можете удалить метод переопределения: @ Override

public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

и удалить инструменты:

implements AdapterView.OnItemSelectedListener
...