Как создать спиннер в Android? - PullRequest
1 голос
/ 13 октября 2011

это работает, но когда начинается действие, оно автоматически произносит «One», потому что оно выбрано по умолчанию. Как сделать так, чтобы спиннер содержал значение по умолчанию, которого нет в реальном диалоговом окне, например, «Пожалуйста, выберите категорию» или, по крайней мере, чтобы «один» не выбирался автоматически. Спасибо

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

        }});

Ответы [ 3 ]

2 голосов
/ 13 октября 2011

Спиннер в Android по умолчанию показывает первое значение в адаптере, если ничего не выбрано по умолчанию. К сожалению, изменить это невозможно.

В вашем случае вы можете добавить Choose a Category к вашему массиву:

final String[] items = new String[] {"Choose a category", "One", "Two", "Three"};

Но внутри onItemSelected вы должны справиться с этим, то есть:

public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
    if(position != 0)  {
        Toast.makeText(getApplicationContext(), items[position], Toast.LENGTH_SHORT).show();
    }
}
0 голосов
/ 13 октября 2011

это сделает так, чтобы адаптер массива менялся при щелчке по спиннеру, делая так, чтобы значение, которое было там изначально, исчезло;в этом случае "выберите категорию"

        //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
            }
        });
0 голосов
/ 13 октября 2011

Вы можете вручную установить выбранный по умолчанию элемент в счетчике.

        catagorySpinner.setSelection(2);
...