奇Android的微调行为 [英] Odd Android Spinner behavior

查看:106
本文介绍了奇Android的微调行为的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是在code来填充我的微调。

在code:

 的String [] RCS =新的String [review_cycles.length]
的for(int i = 0; I< review_cycles.length;我++)
    RCS [i] = review_cycles [I] .ReviewCycleName;
ArrayAdapter<字符串> rc_spinnerAdapter =新的ArrayAdapter<字符串>(
        ActivityManagementReview.this,
        R.layout.simple_spinner_item,
        RCS);
sp_review_cycle.setAdapter(rc_spinnerAdapter);
sp_review_cycle.setOnItemSelectedListener(新OnItemSelectedListener(){
    @覆盖
    公共无效onItemSelected(适配器视图<> parentView,查看selectedItemView,INT位置,长的id){
        DtoMrReviewCycleVersion selected_review_cycle_version = review_cycles [位置]
        如果(selected_review_cycle_version!= latest_review_cycle_version){
            latest_review_cycle_version = selected_review_cycle_version;
            INT mr_version_id = latest_review_cycle_version.MrdVersionId;
            _URL_version = _url_base +MrVersion /+ Integer.toString(mr_version_id);
            新GetMrVersionInfoAsyncTask()执行()。
        }
    }

    @覆盖
    公共无效onNothingSelected(适配器视图<> parentView){
        返回;
    }
});
 

当我从微调选择值时,code执行两次。一旦与我做的选择,然后右键后,在列表中的第一项执行一次带我回到那里,我开始。

我怎么能发生prevent呢?

感谢。

解决方案
  

当我选择微调值时,code执行两次。

正如我在评论中提醒你,纱厂呼叫 onItemSelected()时,加载默认值。当你了解它,此功能是有用的,但因为它不是一般开发商希望它是什么问题为好。

微调器也会打电话给 onItemSelected()当用户重新选择当前值...当我想避免这两个我用的东西像这样的误报警这样的:

  spinner.setOnItemSelectedListener(新OnItemSelectedListener(){
    INT previous = -1;
    @覆盖
    公共无效onItemSelected(适配器视图<>母公司视图中查看,INT位置,长的id){
        如果(previous =位置和放大器;!&安培; previous< -1){
            Log.v(榜样,选择:+位置);
            // 做一点事
        }
        previous =位置;
    }

    @覆盖
    公共无效onNothingSelected(适配器视图<>母公司){}
});
 

This is the code to populate my spinner.

The code:

String[] rcs = new String[review_cycles.length];
for (int i = 0; i < review_cycles.length; i++)
    rcs[i] = review_cycles[i].ReviewCycleName;
ArrayAdapter<String> rc_spinnerAdapter = new ArrayAdapter<String>(
        ActivityManagementReview.this,
        R.layout.simple_spinner_item, 
        rcs);
sp_review_cycle.setAdapter(rc_spinnerAdapter);
sp_review_cycle.setOnItemSelectedListener(new OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
        DtoMrReviewCycleVersion selected_review_cycle_version = review_cycles[position];
        if (selected_review_cycle_version != latest_review_cycle_version) {
            latest_review_cycle_version = selected_review_cycle_version;
            int mr_version_id = latest_review_cycle_version.MrdVersionId;
            _URL_version = _url_base + "MrVersion/" + Integer.toString(mr_version_id);
            new GetMrVersionInfoAsyncTask().execute();
        }
    }

    @Override
    public void onNothingSelected(AdapterView<?> parentView) {
        return;
    }
});

When I select a value from the spinner, the code is executed twice. Once with the selection I made and then right afterward, the first item in the list is executed again bringing me back to where I started.

How can I prevent this from happening?

Thanks.

解决方案

When I select a value from the spinner, the code is executed twice.

As I reminded you in the comments, Spinners call onItemSelected() when they load the default value. This feature is useful when you know about it, but since it is not what the average developer expects it is problematic as well.

The Spinner will also call onItemSelected() when the user re-selects the current value... When I want to avoid both of these false alarms I use something like this:

spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
    int previous = -1;
    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
        if(previous != position && previous < -1) {
            Log.v("Example", "Selected: " + position);
            // Do something
        }
        previous = position;
    }

    @Override
    public void onNothingSelected(AdapterView<?> parent) {}
});

这篇关于奇Android的微调行为的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆