如何使用警报对话框更改微调器值? Android

How to change spinner value with alert dialog? Android

谁能告诉我如何在调用警报对话框后更改微调器值?单击 "Other..." 时,我正在调用警报对话框。我不知道如何用我在警报对话框中编写的新值替换 "Other..." 值。

    final Spinner spinnerLessonDuration = (Spinner) findViewById(R.id.spinnerLessonDuration);
    final ArrayAdapter<CharSequence> adapterLessonDuration = ArrayAdapter.createFromResource(this, R.array.lessonDuration, android.R.layout.simple_spinner_item);
    adapterLessonDuration.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

    spinnerLessonDuration.setAdapter(
            new NothingSelectedSpinnerAdapter(
                    adapterLessonDuration,
                    R.layout.contact_spinner_row_nothing_selected_lesson_duration, this));

    spinnerLessonDuration.setOnItemSelectedListener(new setOnItemSelectedListener() {
           public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
               System.out.println("2 " + spinnerLessonDuration.getSelectedItem());
               if (spinnerLessonDuration.getSelectedItem() != null && "Other...".equals(spinnerLessonDuration.getSelectedItem().toString()))
               {
                           View view1 = (LayoutInflater.from(MainActivity.this)).inflate(R.layout.user_input, null);

                           AlertDialog.Builder alertBuilder = new AlertDialog.Builder(MainActivity.this);
                           alertBuilder.setView(view1);
                           final EditText userInput = (EditText) view1.findViewById(R.id.userinput);

                           alertBuilder.setCancelable(true)
                                   .setPositiveButton("Ok", new DialogInterface.OnClickListener() {

                                       @Override
                                       public void onClick(DialogInterface dialog, int which) {
                                           //EditText valueView = (EditText) view1.findViewById(R.id.license_value); //here
                                           if (userInput == null) Log.d("AA", "NULL");
                                           else {
                                               String value = userInput.getText().toString();
                                               Log.i(value, "1");


                                           }


                                       }
                                   });
                           Dialog dialog = alertBuilder.create();
                           dialog.show();

               }


           }

           }
     );

首先,您需要替换 ListAdapter 中的项目。 您可以删除然后插入一个新值,如下所示:

adapterLessonDuration.setNotifyOnChange(false);
adapterLessonDuration.remove(adapterLessonDuration.getItem(position)); 
adapterLessonDuration.insert(userInput, position);
adapterLessonDuration.notifyDataSetChanged();

制作位置参数最终.

注意:项目值更改后,您的条件 "Other...".equals(...) 将不再有效。

另一种方法 - 将 ArrayAdapter 覆盖为您自己的,或将自定义值放入其中 class,并在项目值更改后调用 notifyDataSetChanged()。

.xml file

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.testing.MainActivity" >

    <Spinner
        android:id="@+id/spinner1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        />

</RelativeLayout>

.java file

public class MainActivity extends Activity {

    Spinner spinner;
    String[] name = { "Prakash", "Bhavin", "Chirag", "Kishan", "Sandy" };

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

        spinner = (Spinner) findViewById(R.id.spinner1);

        ArrayAdapter<String> adapter = new ArrayAdapter<String>(
                getApplicationContext(),
                android.R.layout.simple_dropdown_item_1line, name);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner.setAdapter(adapter);


        spinner.setOnItemSelectedListener(new OnItemSelectedListener() {

            @Override
            public void onItemSelected(AdapterView<?> parent, View view,
                    int position, long id) {
                // TODO Auto-generated method stub

                AlertDialog.Builder builder = new AlertDialog.Builder(
                        MainActivity.this);
                builder.setTitle("This is Selected Value " + name[position]);
                builder.setPositiveButton("Yes",
                        new DialogInterface.OnClickListener() {

                            @Override
                            public void onClick(DialogInterface dialog,
                                    int which) {
                                // TODO Auto-generated method stub
                                Toast.makeText(getApplicationContext(),
                                        "Yes Button clicked...",
                                        Toast.LENGTH_SHORT).show();

                            }
                        });
                builder.setNegativeButton("No",
                        new DialogInterface.OnClickListener() {

                            @Override
                            public void onClick(DialogInterface dialog,
                                    int which) {
                                // TODO Auto-generated method stub
                                Toast.makeText(getApplicationContext(),
                                        "No Button clicked...",
                                        Toast.LENGTH_SHORT).show();

                            }
                        });
                builder.setNeutralButton("Help",
                        new DialogInterface.OnClickListener() {

                            @Override
                            public void onClick(DialogInterface dialog,
                                    int which) {
                                // TODO Auto-generated method stub
                                Toast.makeText(getApplicationContext(),
                                        "Help Button clicked...",
                                        Toast.LENGTH_SHORT).show();

                            }
                        });
                builder.show();
            }

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

            }
        });

    }


}

已修复!

问题是来自 R.array 的数组列表是不可变的 :)

    ArrayList<CharSequence> testArrayList = new ArrayList<CharSequence>();
    CharSequence[] strings = getResources().getTextArray(R.array.lessonDuration);
    Collections.addAll(testArrayList, strings);

    final Spinner spinnerLessonDuration = (Spinner) findViewById(R.id.spinnerLessonDuration);
    final ArrayAdapter<CharSequence> adapterLessonDuration = new ArrayAdapter<CharSequence>(this, android.R.layout.simple_spinner_item, testArrayList);