2016-08-19 65 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"); 

    } 
} 
相关问题