2015-06-23 66 views
0

有人能告訴我如何改變微調值在警報對話框被調用後?當「Other ...」被點擊時,我打電話給警報對話框。我不知道如何用我在警報對話框中寫入的新值替換「其他...」值。如何使用警報對話框更改微調器值? Android

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(); 

       } 


      } 

      } 
    ); 
+0

你需要在轉新的價值? –

回答

0

固定它!

的問題是,從R.array ArrayList中是不可變的:)

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); 
0

首先,您需要替換ListAdapter中的項目。 您可以刪除,然後再插入一個新的價值,就像這樣:

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

使位置參數最終

注意:項目值更改後,您的條件「Other ...」。equals(...)將不再有效。

另一種方法是將ArrayAdapter重寫爲自己的值,或將自定義類的值放入其中,並在項值更改後調用notifyDataSetChanged()。

0
.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 

      } 
     }); 

    } 


}