I am trying to build a layout with some spinners and a list below the
spinners. The layouts and the code work fine when I get the spinner values
from an array resource. When I try to populate the spinners from an array, I
get an exception, see below. Is it possible to have spinner and a list view
in the same layout? Which adapter do I need for the spinners?
Thanks
Fred
Uncaught handler: thread Main exiting due to uncaught exception
java.lang.ClassCastException: Landroid/widget/Spinner;
at
android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:240)
at android.widget.ArrayAdapter.getView(ArrayAdapter.java:221)
at android.widget.ArrayAdapter.getMeasurementView(ArrayAdapter.java:217)
at android.widget.AbsSpinner.onMeasure(AbsSpinner.java:230)
at android.view.View.measure(View.java:5937)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:2250)
at
android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:742)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:289)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:231)
at android.view.View.measure(View.java:5937)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:2250)
at
android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:742)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:289)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:231)
at android.view.View.measure(View.java:5937)
at android.view.ViewGroup.measureChild(ViewGroup.java:2218)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:146)
at android.view.View.measure(View.java:5937)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:385)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:231)
at android.view.View.measure(View.java:5937)
at android.view.ViewGroup.measureChild(ViewGroup.java:2218)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:146)
at android.policy.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:1202)
at android.view.View.measure(View.java:5937)
at android.view.ViewRoot.performTraversals(ViewRoot.java:341)
at android.view.ViewRoot.handleMessage(ViewRoot.java:584)
at android.os.Handler.dispatchMessage(Handler.java:80)
at android.os.Looper.loop(Looper.java:91)
at android.app.ActivityThread.main(ActivityThread.java:3052)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:356)
at android.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1547)
at android.os.ZygoteInit.main(ZygoteInit.java:1445)
at android.dalvik.NativeStart.main(Native Method)
Layout:
<?xml version="1.0" encoding="utf-8"?>
<!-- layout_width="fill_parent" is needed down to the row TextView to get
the rows to use the whole width when selected, even if the text does not
fill up the whole line -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<LinearLayout android:id="@+id/TopLinearLayout"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView android:id="@+id/tagslabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Tags to look for"
android:textSize="20sp"/>
<Button android:id="@+id/reset"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Reset all tags"
android:textSize="20sp"/>
</LinearLayout>
<LinearLayout android:id="@+id/TagsLinearLayout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<Spinner android:id="@+id/tag1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
<Spinner android:id="@+id/tag2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
<Spinner android:id="@+id/tag3"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
<Spinner android:id="@+id/tag4"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
<LinearLayout android:id="@+id/ListLinearLayout"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<ListView android:id="@+id/android:list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
<TextView android:id="@+id/android:empty"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="No Notes!"/>
</LinearLayout>
</LinearLayout>
The java code for the spinners:
private void createSpinners()
{
Log.i("createSpinners","entry");
int[] spinnerIds = {R.id.tag1, R.id.tag2, R.id.tag3, R.id.tag4};
this.spinners = new Spinner[spinnerIds.length];
int i = 0;
for (int spinnerId : spinnerIds)
{
Spinner spinner = (Spinner) findViewById(spinnerId);
populateSpinner(spinner, spinnerId);
spinner.setOnItemSelectedListener(this);
spinners[i] = spinner;
Log.i("createSpinners","exit");
}
Log.i("createSpinners","exit");
}
private void populateSpinner(Spinner spinner, int spinnerId) {
Log.i("Notepadv3", "populateSpinner fetchAllTags");
// Get all of the rows from the database and create the item list
String[] tags = mDbHelper.fetchAllTags();
Log.i("Notepadv3", "populateSpinner fetchAllTags done");
/*
// That code works
ArrayAdapter<CharSequence> adapter =
ArrayAdapter.createFromResource(
this, R.array.tags, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
*/
// Switching to that code, will produce an exception
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
R.layout.notes_list, spinnerId, tags);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
}
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[EMAIL PROTECTED]
Announcing the new M5 SDK!
http://android-developers.blogspot.com/2008/02/android-sdk-m5-rc14-now-available.html
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
-~----------~----~----~----~------~----~------~--~---