2016-08-19 22 views
2

Я создаю деятельность с двумя прядильщиками.
Один Вертушка получает свои элементы из strings.xmlПочему я не вижу значения в прядильщике?

Второй Вертушка получает свой предмет динамически (onCreate() метод).

Я вижу только значения первого Spinner и не вижу значения второго («bla - 1», «bla 2»).

Что я делаю неправильно?

public class ChooseContactActivity extends AppCompatActivity { 

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

     // set howOften_spinner 
     Spinner spinner = (Spinner) findViewById(R.id.howOften_spinner); 
     ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.howOften, android.R.layout.simple_spinner_item); 
     adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     spinner.setAdapter(adapter); 


     Spinner spiner2 = (Spinner) findViewById(R.id.contacts_spinner); 
     ArrayAdapter<String> spinnerAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, android.R.id.text1); 
     spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     spinnerAdapter.add("bla - 1"); 
     spinnerAdapter.add("bla - 2"); 
     spinnerAdapter.notifyDataSetChanged(); 
     spiner2.setAdapter(spinnerAdapter); 
     spinnerAdapter.notifyDataSetChanged(); 

    } 

} 

XML

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 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" 
    android:orientation="vertical" 
    tools:context="com.example.root.databaseexample.ChooseContactActivity"> 

    <Spinner 
     android:id="@+id/contacts_spinner" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" /> 

    <Spinner 
     android:id="@+id/howOften_spinner" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" /> 

</LinearLayout> 
+0

Можете ли вы изменить набор данных после того, как вы установили адаптер? – Eenvincible

+0

Что произошло после изменений? – Eenvincible

+0

ничего, такие же результаты – user3668129

ответ

0

Я думаю, что проблема в том, что вы не предоставили массив или List для хранения ценностей. Вы должны создать ArrayList со значениями, которые вы хотите отобразить. Затем используйте один из конструкторов ArrayAdapter, который включает в себя параметр List. См. Dynamic add items to listview using arrayadapter Android для более подробной информации.

+0

Используя конструктор ArrayAdapter, который не принимает список, я не думаю, что это необходимо. Исходный код - http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/5.1.1_r1/android/widget/ArrayAdapter.java#ArrayAdapter.%3Cinit%3E% 28android.content.Context% 2Cint% 2Cint% 29 –

+1

@ cricket_007 Это был удар в темноте ... теперь я действительно смущен. Я не вижу ничего плохого в коде OP. –

0

Невозможно воспроизвести ваши результаты.

emulator

Вот код, который я попробовал.

public class SpinnerActivity extends AppCompatActivity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_spinner); 

     Spinner s1 = (Spinner) findViewById(R.id.contacts_spinner); 
     Spinner s2 = (Spinner) findViewById(R.id.howOften_spinner); 

     final int adapterItemLayout = android.R.layout.simple_spinner_item; 
     final int dropdownItemLayout = android.R.layout.simple_spinner_dropdown_item; 

     ArrayAdapter<CharSequence> resourceAdapter = ArrayAdapter.createFromResource(this, R.array.howOften, adapterItemLayout); 
     ArrayAdapter<String> dynamicAdapter = new ArrayAdapter<String>(this, adapterItemLayout); 

     resourceAdapter.setDropDownViewResource(dropdownItemLayout); 
     dynamicAdapter.setDropDownViewResource(dropdownItemLayout); 

     s1.setAdapter(resourceAdapter); 
     s2.setAdapter(dynamicAdapter); 

     dynamicAdapter.add("bla - 1"); 
     dynamicAdapter.add("bla - 2"); 

    } 
} 
Смежные вопросы