У меня есть счетчик и некоторые виды текста, которые меняются в зависимости от выбранного элемента счетчика.
У меня есть внешний текстовый файл для хранения данных, который выглядит следующим образом:
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) {
}
});
Все переменные доступны в любом месте класса, но почему я не могу получить правильное соответствующее значение на основе выбранного элемента в счетчике?