Спиннер Android onItemSelected не может занять позицию массива строк - PullRequest
0 голосов
/ 29 октября 2018

У меня есть счетчик и некоторые виды текста, которые меняются в зависимости от выбранного элемента счетчика. У меня есть внешний текстовый файл для хранения данных, который выглядит следующим образом:

Mission Impossible: Fallout| 6.6| 148| Tom Cruis, Henry Carvill| 11:00 am, 1:10 pm, 2:55 pm, 3:05 pm, 5:10 pm| mifallout.jpg
The Predator| 5.8| 118| Olivia Munn, Boyd Holbrook| 1:10 pm, 2:50 pm, 4:55 pm, 6:55 pm| predator.jpg

Я читаю и сохраняю их в массив и настраиваю их на адаптер вращения. Но теперь on ItemSelected не изменяет текстовые представления соответственно UNLESS я жестко кодирую их как

 if (spinnerValue.equals("Incredibles 2")) {
                ratingText.setText("8.0");
                durationText.setText("125");
                castText.setText("Craig Nelson, Holly Nelson");

Жесткое их кодирование не является хорошей практикой, и я хочу сделать это динамически. Ниже моя попытка:

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

 try{
            bufferedReader = new BufferedReader(new InputStreamReader(this.getAssets().open("movie_superhero.txt")));
            while ((sMovies = bufferedReader.readLine())!=null) {
                if (!sMovies.equals("")) {
                    arrMovies = sMovies.split("\\|");
                    list.add(arrMovies[0].toString());
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
         dataAdapter = new ArrayAdapter<String>(this, R.layout.support_simple_spinner_dropdown_item, list);
 dataAdapter.setDropDownViewResource(R.layout.support_simple_spinner_dropdown_item);
    spinner.setAdapter(dataAdapter);

onItemSelected:

        spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
            String item = adapterView.getItemAtPosition(i).toString();
            Toast.makeText(adapterView.getContext(), "Selected: " + item, Toast.LENGTH_LONG).show();


            ratingText.setText(arrMovies[1].toString());
            durationText.setText(arrMovies[2].toString());
            castText.setText(arrMovies[3].toString());

        }

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

        }
    });

Все переменные доступны в любом месте класса, но почему я не могу получить правильное соответствующее значение на основе выбранного элемента в счетчике?

...