Подсказка Spinner Android? - PullRequest
       26

Подсказка Spinner Android?

2 голосов
/ 21 июня 2011

У меня есть два счетчика в моем текущем приложении для Android, я хотел бы иметь значение по умолчанию, например, editText's android: подсказка.Есть ли способ сделать это, но таким образом, чтобы не добавить подсказку к массиву строк, который заполняет счетчик.например, невозможно выбрать подсказку из списка счетчиков.

Кроме того, есть ли способ проверить, выбрал ли пользователь правильное значение, и если нет, выполнить действие.Я делаю это в моих editTexts, получая значение в строку, а затем:

if (calculator_ShutterSpeed_TempValue.equals("") ){ action }

И могу ли я вернуть спиннер в значение подсказки при нажатии другой кнопки?

Итак, я спрашиваю:

  1. Подсказка счетчика, которую невозможно снова отобразить после того, как пользователь нажал на счетчик?
  2. Проверьте, выбрал ли пользовательдействительное значение от счетчика (они выбрали значение, превышающее значение подсказки по умолчанию)?
  3. Повторно отобразить подсказку при нажатии кнопки сброса?

Ответы [ 2 ]

2 голосов
/ 21 июня 2011

Чтобы установить значение по умолчанию в Spinner, вы должны сначала установить выбранный индекс setSelection(index) и сохранить его в настройках, используя SharedPreferences.Пожалуйста, проверьте код для установки и загрузки настроек.Поэтому onResume() выделите выбранное значение индекса.

Чтобы получить значение из счетчика, используйте spinner.getSelectedItem() и приведите его к String.Теперь вы можете сравнить его с вашими критериями.

Чтобы снова отобразить подсказку, сначала она должна быть как элемент в счетчике, а затем активировать OnItemSelectedListener.В этом коде прослушивателя снова сбросьте выбранный индекс до индекса подсказки.

0 голосов
/ 17 октября 2013

Я справляюсь с этим, используя кнопку вместо Spinner. У меня есть пример проекта на GitHub.

В проекте я показываю и Spinner, и кнопку, чтобы показать, что они действительно выглядят одинаково.Кроме кнопки вы можете установить исходный текст o, что вы хотите.

Вот как выглядит упражнение:

package com.stevebergamini.spinnerbutton;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Spinner;

public class MainActivity extends Activity {

    Spinner spinner1;
    Button button1;
    AlertDialog ad;
    String[] countries;

    int selected = -1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        spinner1 = (Spinner) findViewById(R.id.spinner1);
        button1 = (Button) findViewById(R.id.button1);

        countries = getResources().getStringArray(R.array.country_names);

        //  You can also use an adapter for the allert dialog if you'd like
        //  ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, countries);        

        ad = new AlertDialog.Builder(MainActivity.this).setSingleChoiceItems(countries, selected,  
                new  DialogInterface.OnClickListener() {

                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            button1.setText(countries[which]);
                            selected = which;
                            ad.dismiss();

                        }}).setTitle(R.string.select_country).create(); 


        button1.setOnClickListener( new OnClickListener(){

            @Override
            public void onClick(View v) {
                ad.getListView().setSelection(selected);
                ad.show();              
            }});

    }

}
...