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

public void first() {
    List<String> data = db.getBodyParts();
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, data);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    firstSpinner.setAdapter(adapter);


    firstSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {

        }

        @Override
        public void onNothingSelected(AdapterView<?> adapterView) {
        }
    });
}

public void second() {
    List<String> data = db.getBodyParts();
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, data);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    secondSpinner.setAdapter(adapter);


    secondSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {

        }

        @Override
        public void onNothingSelected(AdapterView<?> adapterView) {
        }
    });
}
0
For_est_1 15 Сен 2018 в 17:47

2 ответа

Лучший ответ

Вам не нужен повторяющийся код, просто отправьте счетчик в качестве параметра в свой метод, как показано ниже:

public void fillSpinner(Spinner spinner) {
    List<String> data = db.getBodyParts();
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, data);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner.setAdapter(adapter);


    spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {

        }

        @Override
        public void onNothingSelected(AdapterView<?> adapterView) {
        }
    });
}

Использование такое:

fillSpinner(firstSpinner);

Или

fillSpinner(secondSpinner);

При таком подходе вы можете использовать неограниченное количество счетчиков без дублирования кода.

0
Oğuzhan Döngül 15 Сен 2018 в 15:13

Пытаться:

public void first() {
    List<String> data = db.getBodyParts();
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, data);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    firstSpinner.setAdapter(adapter);


    firstSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {

        }

        @Override
        public void onNothingSelected(AdapterView<?> adapterView) {
        }
    });

    secondSpinner.setAdapter(adapter);


    secondSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {

        }

        @Override
        public void onNothingSelected(AdapterView<?> adapterView) {
        }
    });
}
-1
Max 15 Сен 2018 в 15:03