2016-08-19 64 views
2

我正在用2個Spinners創建一個活動。
一個微調器從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。然後使用其中包含List參數的ArrayAdapter構造函數之一。有關更多詳細信息,請參閱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"); 

    } 
} 
相關問題