2016-08-03 2 views
1

я добавил свои данные в array.xml файл и ссылку наКак обновлять данные в Spinner Dynamic в Android?

<string-array name="state"> 
     <item>ANDAMAN NICOBAR ISLANDS</item> 
     <item>ANDHRA PRADESH</item> 
     <item>ARUNACHAL PRADESH</item> 

    <Spinner 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/drpstate" 
     android:entries="@array/state"/> 

я хочу изменить это записи динамически

заранее спасибо ..

+0

затем используйте адаптер, который принимает динамические данные. – pskink

+0

@pskink Пожалуйста, приведите пример. –

+0

'ArrayAdapter' например – pskink

ответ

4

Используйте адаптер.add(), чтобы добавить данные, а затем вызовите адаптер.notifyDataSetChanged(), чтобы применить изменения.

Spinner spinner = (Spinner)findViewById(R.id.mySpinner); 
    List<String> list = Arrays.asList(getResources().getStringArray(R.array.state)); 

    ArrayAdapter<String> spinnerAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, list); 
    spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    spinner.setAdapter(spinnerAdapter); 
    spinnerAdapter.add("DELHI"); 
    spinnerAdapter.notifyDataSetChanged(); 
0

Вы можете добиться этого в Java коде, следующим образом:

List<String> categories = new ArrayList<String>(); 
    categories.add("Automobile"); 
    categories.add("Business Services"); 
    categories.add("Computers"); 
    categories.add("Education"); 
    categories.add("Personal"); 
    categories.add("Travel"); 

    ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, categories); 

    spinner.setAdapter(dataAdapter); 

Источник: http://www.tutorialspoint.com/android/android_spinner_control.htm

+0

спасибо человеку .. без добавления в java ... используйте этот xml-файл Динамически его можно ?? –

+1

Нет, это не так. Однако, если вы хотите прочитать новый список из XML-массива, вы можете сделать это следующим образом: 'String [] testArray = getResources(). GetStringArray (R.array.testArray);' –

+0

привет, спасибо вам, его работы –

0

Вы делаете это с использованием любого подкласса BaseAdapter. Предполагая, что вы хотите загрузить данные из базы данных, вы используете SimpleCursorAdapter.

String[] from = new String[]{"nameOfColumn"}; //nameOfColumn is the name of the column in cursor to display in the spinner. 
    int[] to = new int[]{android.R.id.text1}; 

    SimpleCursorAdapter cursorAdapter = new SimpleCursorAdapter (this, android.R.layout.simple_spinner_item, null, from, to, 0); 
    cursorAdapter.setDropDownViewResource (android.R.layout.simple_spinner_dropdown_item); 
    binding.paymentChannelSpinner.setAdapter (cursorAdapter); 
    binding.paymentChannelSpinner.setOnItemSelectedListener (new AdapterView.OnItemSelectedListener() { 
     @Override 
     public void onItemSelected (AdapterView<?> adapterView, View view, int i, long l) { 
      if (i != -1) { 
       Cursor c = (Cursor) adapterView.getItemAtPosition (i); 

      } 
     } 

     @Override 
     public void onNothingSelected (AdapterView<?> adapterView) { 

     } 
    }); 

после получения данных как курсор из базы данных вы установите курсор к адаптеру, как это:

cursorAdapter.changeCursor(cursorFromDB); 

Однако, если данные в массиве Java вы можете пользователь Arrayadapter