Reputation: 31
I have a simple layout (two TextViews
and one Spinner
), the array and the MainActivity.java
which in the onCreate
method, through an adapter populates the Spinner
.
When I execute the app I can click on the Spinner
but nothing happens in android 4.3(API level 16) and a empty, white row is displayed in android2.3.3(Api level 10).
Shouldn't I at least see and select one of the strings?
main.xml:
<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" >
<TextView
android:id="@+id/question"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:text="@string/question" />
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/question"
android:text="@string/one" />
<Spinner
android:id="@+id/nationalities_spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/question"
android:layout_toRightOf="@+id/textView1"
android:entries="@array/nationalities_array"
android:tag="@string/select_string" />
</RelativeLayout>
The array for the Spinner
:
<string-array name="nationalities_array">
<item>Italian</item>
<item>German</item>
<item>British</item>
<item>Dutch</item>
</string-array>
and the MainActivity.java
:
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Spinner nationalities_spinner = (Spinner) findViewById(R.id.nationalities_spinner);
ArrayAdapter<CharSequence> adapter = new ArrayAdapter<CharSequence>(this, R.array.nationalities_array, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
nationalities_spinner.setAdapter(adapter);
}
public void onResume(){
super.onResume();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
Upvotes: 2
Views: 163
Reputation: 87074
You don't see something in your Spinner
because you use an incorrect constructor for the ArrayAdapter
which results in an empty ArrayAdapter
for your Spinner
. You use this ArrayAdapter
constructor and provide something different than what it wants(a layout file resource and an id of a TextView
from that layout file). Instead you probably want this :
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.nationalities_array, android.R.layout.simple_spinner_item);
Upvotes: 1