Диалог оповещений о выборе определенного выпадающего элемента - PullRequest
0 голосов
/ 31 мая 2019

Я сделал Spinner выбора города. У меня там показаны некоторые конкретные города (указанные в моем проекте), и последний элемент в dropDownList - это «другие». Я хочу, чтобы, когда пользователи выбирали «другие», либо появлялось диалоговое окно с TextInputLayout, запрашивающим, чтобы пользователь печатал в городе, либо любым другим способом. Я просто хочу, чтобы после выбора других я попросил пользователя ввести город, и этот город отображается в поле счетчика. Я новичок в Android Studio и не могу решить это условие.

Вот что я сделал до сих пор. макет блесны в моем activity_main.xml

<Spinner
    android:id="@+id/citySpinner"
    android:layout_width="300dp"
    android:layout_height="wrap_content"
    android:layout_marginBottom="16dp"
    android:spinnerMode="dialog" />

Макет для стиля выделенного текста, отображаемый в поле счетчика

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fontFamily="@font/ubuntu_bold"
    android:textColor="@color/Blue"
    android:textSize="16sp">
</TextView>

Макет для выпадающих элементов

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:textColor="@color/Blue"
    android:paddingBottom="12dp"
    android:paddingTop="12dp"
    android:paddingStart="12dp"
    android:fontFamily="@font/ubuntu_medium">
</TextView>

и Моя основная деятельность

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Spinner citySpinner = findViewById(R.id.citySpinner);
        List<String> cityList = new ArrayList<String>();
        cityList.add("Select a City");
        cityList.add("Banglore");
        cityList.add("Pune");
        cityList.add("Mumbai");
        cityList.add("Noida/Ghaziabad");
        cityList.add("Other");

        ArrayAdapter<String> cityDataAdapter = new ArrayAdapter<String>(this, 
        R.layout.city_spinner_selected_item, cityList);  
        cityDataAdapter.setDropDownViewResource(R.layout.support_simple_
        spinner_dropdown_item);
        cityDataAdapter.setDropDownViewResource(R.layout.register_dropd
        own_item);
        citySpinner.setAdapter(cityDataAdapter);

}

Теперь, как мне установить диалоговое окно оповещения для других?

1 Ответ

0 голосов
/ 31 мая 2019

Сначала создайте OnItemSelectedListener, и с помощью position == 5 вы знаете, когда нажимается др. .

citySpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
    if(position == 5){
        //show your dialog
    }
}

});

Затем вы создаете диалог с EditText.

AlertDialog.Builder alert = new AlertDialog.Builder(MainActivity.this);
alert.setTitle("Enter City");

EditText editText = new EditText(this);
alert.setView(editText);


alert.setPositiveButton("Enter", new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int whichButton) {
       //Here you set the text of your EditText to your TextView
       yourtextview.setText(editText.getText().toString());
    }
});

alert.show();

Тогда вы просто кладете это в свой OnItemSelectedListener.

 citySpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
    if(position == 5){


AlertDialog.Builder alert = new AlertDialog.Builder(MainActivity.this);
    alert.setTitle("Enter City");

    EditText editText = new EditText(this);
    alert.setView(editText);


    alert.setPositiveButton("Enter", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int whichButton) {
           //Here you set the text of your EditText to your TextView
           yourtextview.setText(editText.getText().toString());
        }
    });

    alert.show();
    }
    }

    });
...