Могу ли я заполнить несколько блесен одними и теми же данными одним способом? - PullRequest
0 голосов
/ 15 сентября 2018

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

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) {
        }
    });
}

Ответы [ 2 ]

0 голосов
/ 15 сентября 2018

Вам не нужен дубликат кода, просто отправьте счетчик как параметр в ваш метод, как показано ниже:

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 голосов
/ 15 сентября 2018

Попробуйте:

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) {
        }
    });
}
...