我在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;
}
}
如果这不起作用或者这是一个不好的做法,我应该使用对话框吗? 所有答案都会有所帮助。谢谢
答案 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
}
});