如何在android中创建微调器?

如何在android中创建微调器?,android,spinner,adapter,Android,Spinner,Adapter,这是可行的,但当活动启动时,它会自动敬酒“一”,因为默认情况下它处于选中状态。如何使微调器框包含实际对话框中不存在的默认值,如“请选择类别”,或至少不自动选择“一个”。谢谢 final String[] items = new String[] {"One", "Two", "Three"}; final Spinner catagorySpinner = (Spinner) findViewById(R.id.spinner); ArrayAdapter<

这是可行的,但当活动启动时,它会自动敬酒“一”,因为默认情况下它处于选中状态。如何使微调器框包含实际对话框中不存在的默认值,如“请选择类别”,或至少不自动选择“一个”。谢谢

final String[] items = new String[] {"One", "Two", "Three"};
        final Spinner catagorySpinner = (Spinner) findViewById(R.id.spinner);
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(Expense1.this,
                    android.R.layout.simple_spinner_item, items);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        catagorySpinner.setAdapter(adapter);



        catagorySpinner.setOnItemSelectedListener(new OnItemSelectedListener() {

        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {               
            Toast.makeText(getApplicationContext(), items[position], Toast.LENGTH_SHORT).show();


     }

        public void onNothingSelected(AdapterView<?> parent) {
            // TODO Auto-generated method stub

        }});
final String[]items=新字符串[]{“一”、“二”、“三”};
最终微调器类别微调器=(微调器)findViewById(R.id.Spinner);
ArrayAdapter适配器=新的ArrayAdapter(费用1.5),
android.R.layout.simple\u微调器\u项目,项目);
setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
分类针。设置适配器(适配器);
CatagorisPinner.setOnItemSelectedListener(新的OnItemSelectedListener(){
已选择公共无效项(AdapterView父项、视图、整型位置、长id){
Toast.makeText(getApplicationContext(),items[position],Toast.LENGTH\u SHORT.show();
}
未选择公共无效(AdapterView父级){
//TODO自动生成的方法存根
}});

如果没有选择默认值,Android中的微调器默认显示适配器中的第一个值。不幸的是,没有办法改变它

在您的情况下,您可以将
选择类别
添加到阵列中:

final String[] items = new String[] {"Choose a category", "One", "Two", "Three"};
但是在
onimselected
中,您必须处理这个问题,即:

public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
    if(position != 0)  {
        Toast.makeText(getApplicationContext(), items[position], Toast.LENGTH_SHORT).show();
    }
}
public void已选择(AdapterView父视图、视图视图、int位置、长id){
如果(位置!=0){
Toast.makeText(getApplicationContext(),items[position],Toast.LENGTH\u SHORT.show();
}
}

您可以在微调器中手动设置默认选定项

        catagorySpinner.setSelection(2);

这将使它在单击微调器时更改数组适配器,从而使原来的值消失;在本例中,“选择类别”

//最后选择的字符串;
最终INTA;
最终整数x=1;
最终ArrayList项=新ArrayList();
项目。添加(“选择类别”);
最终微调器类别微调器=(微调器)findViewById(R.id.Spinner);
最终ArrayAdapter适配器=新的ArrayAdapter(费用1.5),
android.R.layout.simple\u微调器\u项目,项目);
setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
分类针。设置适配器(适配器);
final ArrayList itemsTwo=新的ArrayList();
第二项增加(“一”);第二项增加(“两项”);第二项增加(“三”);
最终阵列适配器wo=新阵列适配器(费用1.5),
android.R.layout.simple\u spinner\u item,itemsTwo);
adapterTwo.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
/*在微调器上单击“侦听器”(而不是其中的项目)*/
setOnTouchListener(新的OnTouchListener()){
公共布尔onTouch(视图v,运动事件){
if(event.getAction()==MotionEvent.ACTION\u UP){
分类微调器。设置适配器(适配器2);
分类羽翼机(a);
x++;
}
返回false;
}
});
CatagorisPinner.setOnItemSelectedListener(新的OnItemSelectedListener(){
已选择公共无效项(AdapterView父项、视图、整型位置、长id){
//是否已打开微调器
如果(x!=1){
a=位置;
//单击微调器并更新arrayAdapter时要执行的代码
//在我的例子中,selected=myArray.get(position);
}否则{
//如果“选择类别”仍然存在,则要执行的代码
//在我的案例中,选择=“novalue”;
}
}
未选择公共无效(AdapterView父级){
//TODO自动生成的方法存根
}
});

谢谢xD,我会接受的,当它让我哈哈,这是一个遗憾,它这样做了X3我也花了这么多时间在这个问题上寻找解决办法。如果有人能给我一个方法,我会很高兴的。对我来说,这是不希望添加“选择一个类别”,所以它吸吮。如果你不能选择任何东西,那么OnNothingSelected如何工作
        //final String selected;
        final int a; 
        final int x = 1;
        final ArrayList<String> items = new ArrayList<String>();
        items.add("Select A Category");
        final Spinner catagorySpinner = (Spinner) findViewById(R.id.spinner);
        final ArrayAdapter<String> adapter = new ArrayAdapter<String>(Expense1.this,
                    android.R.layout.simple_spinner_item, items);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        catagorySpinner.setAdapter(adapter);

        final ArrayList<String> itemsTwo = new ArrayList<String>();
        itemsTwo.add("one"); itemsTwo.add("two"); itemsTwo.add("three");

        final ArrayAdapter<String> adapterTwo = new ArrayAdapter<String>(Expense1.this,
                    android.R.layout.simple_spinner_item, itemsTwo);
        adapterTwo.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

        /* on spinner click listener (not items inside) */
        catagorySpinner.setOnTouchListener(new OnTouchListener(){
            public boolean onTouch(View v, MotionEvent event) {
                if(event.getAction() == MotionEvent.ACTION_UP){
                    catagorySpinner.setAdapter(adapterTwo);
                            catagorySpinner.setSelection(a);
                    x++;
                }

                return false;
            }
        });

        catagorySpinner.setOnItemSelectedListener(new OnItemSelectedListener() {
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
                // if the spinner has been opened or not 
                 if(x!=1){      
                     a = position;
                    //code to execute if spinner has been clicked and arrayAdapter has been updated
                    //in my case selected = myArray.get(position);

            } else {

                //code to execute if "choose a catagory" is still there
                //in my case selected = "novalue";
            }
        }

        public void onNothingSelected(AdapterView<?> parent) {
            // TODO Auto-generated method stub
            }
        });