Android Spinner onItemSelected无法占据字符串数组的位置

时间:2018-10-29 03:30:12

标签: java android arrays arraylist spinner

我有一个微调器和一些文本视图,这些视图在选定的不同微调器项目上发生了变化。 我有一个外部文本文件来存储数据,如下所示:

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

        }
    });

所有变量都可以在类中的任何位置访问,但是为什么不能根据微调器中的选定项获得正确的对应值?

0 个答案:

没有答案