微调器 setOnItemClickListener 崩溃了吗?

spinner setOnItemClickListener is crash?

    holder.spinner_teacher_name=(Spinner) rowView.findViewById(R.id.spinner_teacher_name);

    holder.spinner_teacher_name=(Spinner) rowView.findViewById(R.id.spinner_teacher_name);

    arrayAdapter=new ArrayAdapter<String>(rowView.getContext(), android.R.layout.simple_spinner_item,teacher_name);
    arrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    holder.spinner_teacher_name.setAdapter(arrayAdapter);
    holder.spinner.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

    Toast.makeText(rowView.getContext(), "You Clicked "+class_room[position], Toast.LENGTH_SHORT).show();
        }
    });

你应该使用选择监听器,而不是点击监听器

spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() 
        {
            public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) 
            {
             String selected_item = parent.getItemAtPosition(pos).toString();
             Log.d("TAG", "_log : item_selected : " + selected_item);
            }

            public void onNothingSelected(AdapterView<?> parent) 
            {

            }
        });

当用户 selects 来自 drop-down 的项目时,Spinner 对象接收到 on-item-selected 事件。

要为 spinner 定义 selection 事件处理程序,请实施 AdapterView.OnItemSelectedListener 接口和相应的 onItemSelected() 回调方法。

documentation

使用:

holder.spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?> parent, View v, int position, long id) {

        Toast.makeText(rowView.getContext(), "You Clicked " + class_room[position], Toast.LENGTH_SHORT).show();
    }

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

    }
});

而不是:

holder.spinner.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

        Toast.makeText(rowView.getContext(), "You Clicked "+class_room[position], Toast.LENGTH_SHORT).show();
    }
});