Как получить конкретную информацию об объекте из счетчика - PullRequest
1 голос
/ 26 октября 2019

Я имею дело с некоторыми прядильщиками в моем приложении для Android, и по нажатию кнопки я хочу получить конкретную информацию об объекте. Я знаю о mySpinner.getSelectedItem().toString();, но это распечатывает, какой бы ни был мой метод Objects toString();. Допустим, я хочу getCredits(); от моего Course объекта, который в данный момент выбран на счетчике. Как мне это сделать?

, чтобы дать вам представление о том, что я пытаюсь сделать:

for(int i = 0; i < allSpinners.size(); i++) {
            System.out.println(allSpinners.get(i).getSelectedItem().toString());

        }

Мне нужно получить каждый кредит от всех счетчиков в списке. Этот код вместо System.out.println(); должен получить кредиты объекта Course с помощью метода getCredits(); и сложить их вместе +=, но я не уверен, как добраться до объекта в списке счетчиков.

Редактировать: Извините за неясность. Каждый счетчик содержит около 300 объектов, которые извлекаются из ArrayList, который заполняется через TreeMap, который берет объекты из текстового файла

Ответы [ 3 ]

1 голос
/ 26 октября 2019

Список счетчиков всегда заполнен строками, предоставленными его адаптером, поэтому при выборе элемента из счетчика нельзя ожидать чего-то другого, кроме строки;поэтому вам нужен какой-то способ использовать эту строку для получения вашего пользовательского объекта («Курс» в вашем примере);оператор switch - это способ сделать это, взяв это String 'имя курса', возвращаемое из mySpinner.getSelectedItem().toString();, а затем на каждом switch case создайте экземпляр объекта Course и делайте с ним все, что хотите, как в своемпример getCredits();

Если вы вызываете слушателя, то же самое можно применить

mySpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
        switch(position) // switch on item position in adapter

        String selection = (String) parent.getItemAtPosition(position);
        switch(selection) // switch on item String
    }
}

, если вам понадобится дополнительная помощь, я буду рад приветствовать!

0 голосов
/ 27 октября 2019

Спасибо за напоминание всем, получается courseMap.get(allSpinners.get(i).getSelectedItem().toString()).getCredits();, как я должен идти об этом. Все это в цикле for, где i < allSpinner.size(); это массив Spinners

0 голосов
/ 26 октября 2019

В Android вы можете сделать это

    Spinner spinner = findViewById(R.id.spinner1);
    spinner.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            switch (position) {
                case 0:
                    //Do what you want
                    break;

                case 1:
                    //Do what you want
                    break;
            }
        }
    });
...