我有一个Spinner使用自定义适配器,其中getVIEw()被覆盖.我在捕获OnItemSelected事件时遇到问题,我认为该事件与自定义适配器有关.在我的onCreate()中,我有这个:
superGroupAdapter = new SuperGroupAdapter(context, R.layout.row_sg, sg_List);sgSpinner.setAdapter(superGroupAdapter);sgSpinner.setonItemSelectedListener(new AdapterVIEw.OnItemSelectedListener() { @OverrIDe public voID onItemSelected(AdapterVIEw<?> adapterVIEw, VIEw vIEw, int pos, long ID) { Log.d(Constants.TAG, "sg spinner on item selected"); } @OverrIDe public voID onnothingSelected(AdapterVIEw<?> adapterVIEw) { }});
这是我的自定义适配器类:
public class SuperGroupAdapter extends ArrayAdapter<String> { @Inject SharedVisualElements sharedVisualElements; Context context; ArrayList<String> sg_List; public SuperGroupAdapter(Context context, int textVIEwResourceID, ArrayList<String> sg_List) { super(context, textVIEwResourceID, sg_List); // add this line for any class that want to use any of the singleton objects Injector.INSTANCE.getAppComponent().inject(this); this.context = context; this.sg_List = sg_List; } @OverrIDe public VIEw getDropDownVIEw(int position, VIEw convertVIEw, VIEwGroup parent) { return getCustomVIEw(position, convertVIEw, parent); } @OverrIDe public VIEw getVIEw(int position, VIEw convertVIEw, VIEwGroup parent) { return getCustomVIEw(position, convertVIEw, parent); } public VIEw getCustomVIEw(int position, VIEw convertVIEw, VIEwGroup parent) { parent.setBackgroundcolor(sharedVisualElements.backgroundcolor()); LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); VIEw row = inflater.inflate(R.layout.row_sg, parent, false); TextVIEw label = (TextVIEw) row.findVIEwByID(R.ID.sg_name); label.setText(sg_List.get(position)); label.setTypeface(sharedVisualElements.Font()); label.setTextcolor(sharedVisualElements.primaryFontcolor()); label.setGravity(Gravity.CENTER_HORIZONTAL); return row; }}
当活动初始化时,我看到日志输出
sg spinner on item selected
但这是我最后一次看到它.无论我从旋转器中选择一个项目多少次,它都不会再次发射.我一直在寻找一种陷阱的方法,但无济于事.有人可以帮忙吗?谢谢.
编辑
我还尝试更改类签名以实现OnItemSelected并将侦听器声明为单独的方法,如AndroID docs中所述,但得到了相同的结果.
我真的很茫然.我感谢任何帮助.
解决方法:
好吧,我想出来了.在查看了其他一些帖子后,我发现在我的测试数据中,我的微调器列表中只有一个项目. OnItemSelectedListener仅在您更改选择时触发.
来自OnItemSelectedListener的AndroID文档
This callback is invoked only when the newly selected position is
different from the prevIoUsly selected position or if there was no
selected item.
因此,当活动初始化时,它选择了位置0处的项目.当我点击微调器并“选择”相同的项目时,此 *** 作不会触发该事件.活到老,学到老.
总结以上是内存溢出为你收集整理的android – 使用自定义适配器的Spinner OnItemSelected全部内容,希望文章能够帮你解决android – 使用自定义适配器的Spinner OnItemSelected所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)