【问题标题】:Change The Adapter when Click On Spinner单击微调器时更改适配器
【发布时间】:2011-12-29 02:27:07
【问题描述】:

我需要在我点击它的那一刻准确地更改我的 Spinner 的适配器。

我试图显示一个值为“做出你的选择”的微调器,然后当用户单击时,微调器上加载了另一个适配器,他可以做出选择(不显示“做出你的选择”)。

这是我的代码

ArayAdapter adapterclasse = new ArrayAdapter(this,android.R.layout.simple_spinner_item, affp.classes);
ArrayAdapter adaptermodule = new ArrayAdapter(this,android.R.layout.simple_spinner_item, affp.matiers);
spinner.setAdapter(adapterclasse);
spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
        spinner.setAdapter(adaptermodule);
    }

    @Override
    public void onNothingSelected(AdapterView<?> parentView) {
        // your code here
    }
});

但它不起作用。当应用程序启动时,我加载了第二个适配器而不是第一个。

请帮忙,谢谢。

【问题讨论】:

    标签: android onclick spinner adapter


    【解决方案1】:

    设置第二个适配器是因为加载微调器时会调用 onItemSelected 方法,这是正常的(选择第一个元素)。

    无论如何,总的来说,我认为您不需要 2 个适配器,您可以将“Make Your choise”放在顶部,如果用户选择了 onItemSelected,您可以阻止他并要求选择一个实际值。

    【讨论】:

    • 是的,这就是我的想法,但还有其他方法吗?
    【解决方案2】:

    实际上,当用户触摸视图(微调器)时,可以加载一个新的适配器

    spinner.setOnTouchListener(new OnTouchListener()
    {      
        @Override
        public boolean onTouch(View v, MotionEvent event) 
        {
            spinner.setAdapter(adapterclasse2);
            return false;
        }
    
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多