Spinner的OnItemSelectedListener在listview适配器中不起作用

时间:2018-06-09 07:48:32

标签: android listview android-spinner

我在spinner中实现了ListView(在对话框模式下),单击按钮时会打开。但是OnItemSelectedListener在适配器中不起作用。我的Adpater代码如下 :

public class MarkAttendanceAdapter extends ArrayAdapter implements                                                                                           SectionIndexer {

View v;
public MarkAttendanceAdapter(@NonNull Context context) {
    super(context, -1);
}

@Override
    public int getCount() {
        return super.getCount();
    }

@NonNull
    @Override
    public View getView(final int position, @Nullable View convertView, @NonNull ViewGroup parent) {
 v = LayoutInflater.from(context).inflate(R.layout.lv_child_mark_attendance, parent, false);
 final Spinner action_Spinner = (Spinner) v.findViewById(R.id.spinner_action);
 final ArrayList<ItemDataOfSpinner> list = new ArrayList<>();

        list.add(new ItemDataOfSpinner("Absent", R.drawable.icon_a));
        list.add(new ItemDataOfSpinner("Comp-Off", R.drawable.icons_o));
        list.add(new ItemDataOfSpinner("Half-Day", R.drawable.icon_h));
        list.add(new ItemDataOfSpinner("Weekly-Off", R.drawable.icon_w));
        list.add(new ItemDataOfSpinner("Holiday", R.drawable.icon_h));
        list.add(new ItemDataOfSpinner("Leave", R.drawable.icon_l));

        SpinnerAdapter spinnerAdapter = new SpinnerAdapter(context, R.id.txt, list);
        action_Spinner.setAdapter(spinnerAdapter);
        action_Spinner.setOnItemSelectedListener(new AdapterView.OnitemSelectedListener {
            @Override
            public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
                Log.d(TAG,"It Worked selected");
            }

            @Override
            public void onNothingSelected(AdapterView<?> adapterView) {
                Log.d(TAG,"It Worked but nothing selected");
            }
        });
return v;
}
}

如果这不起作用或者这是一个不好的做法,我应该使用对话框吗? 所有答案都会有所帮助。谢谢

2 个答案:

答案 0 :(得分:0)

我认为这可能是点击重叠问题.. 添加你的spinnerAdapter视图(xml):

android:focusable="false"
android:focusableInTouchMode="false"

我不确定但可能是这个......

答案 1 :(得分:0)

试试这个

action_Spinner.setOnItemSelectedListener(new OnItemSelectedListener() 
    {
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) 
        {
           // do your stuff
        } // to close the onItemSelected
        public void onNothingSelected(AdapterView<?> parent) 
        {
           // do your stuff

        }           
    });