android– 使用自定义适配器的Spinner OnItemSelected

android– 使用自定义适配器的Spinner OnItemSelected,第1张

概述我有一个Spinner使用自定义适配器,其中getView()被覆盖.我在捕获OnItemSelected事件时遇到问题,我认为该事件与自定义适配器有关.在我的onCreate()中,我有这个:superGroupAdapter=newSuperGroupAdapter(context,R.layout.row_sg,sg_list);sgSpinner.setAdapter(superGroupAd

我有一个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所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1107916.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存