我有一个微调器和一些文本视图,这些视图在选定的不同微调器项目上发生了变化。 我有一个外部文本文件来存储数据,如下所示:
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并没有相应地更改文本视图除非我像
一样对其进行硬编码 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) {
}
});
所有变量都可以在类中的任何位置访问,但是为什么不能根据微调器中的选定项获得正确的对应值?