Spinner macht probleme

  • Antworten:5
Markus
  • Forum-Beiträge: 20

06.11.2012, 15:06:09 via Website

Hallo zusammen,

da ich in der Android Welt noch sehr unerfahren bin hab ich ein paar für euch sicherlicheinfache Fragen.
Ich habe mir ein Tutoial zum Thema Spinner heruntergeladen und dann eingebaut. Wenn ich das ausführen möchte bekomme ich aber einen Error.
Hier mal der Code:

MainActivity.java:
1package de.android.spinnernew;
2
3import android.app.Activity;
4import android.os.Bundle;
5import android.view.View;
6import android.widget.AdapterView;
7import android.widget.AdapterView.OnItemSelectedListener;
8import android.widget.ArrayAdapter;
9import android.widget.Spinner;
10import android.widget.Toast;
11
12public class MainActivity extends Activity implements OnItemSelectedListener{
13 Spinner spinner;
14 @Override
15 public void onCreate(Bundle savedInstanceState) {
16 super.onCreate(savedInstanceState);
17 setContentView(R.layout.activity_main);
18 spinner = (Spinner) findViewById(R.id.spinner);
19
20 //Register a callback to be invoked when an item in this AdapterView has been selected.
21 //The argument is the callback that will return
22
23 spinner.setOnItemSelectedListener(MainActivity.this);
24
25 // Adapter for spinner
26 ArrayAdapter<?> adapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.spinnerItems, android.R.layout.simple_spinner_dropdown_item);
27 // Sets the layout resource to create the drop down views
28 adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
29
30 //The Adapter is used to provide the data which backs this Spinner.
31 spinner.setAdapter(adapter);
32 }
33 //Hier kommt dann der Error
34 @Override
35 public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
36
37 // On selecting a spinner item
38 String item = parent.getItemAtPosition(position).toString();
39
40 // showing a toast on selecting an item
41 Toast.makeText(parent.getContext(), item, Toast.LENGTH_LONG).show();
42
43 }
44
45 public void onNothingSelected(AdapterView<?> arg0) {
46
47 }
48
49}

activity_main.xml:
1<?xml version="1.0" encoding="utf-8"?>
2<LinearLayout
3 android:layout_width="fill_parent"
4 android:layout_height="fill_parent"
5 android:orientation="vertical" >
6
7 <Spinner
8 android:id="@+id/spinner"
9 android:layout_width="273dp"
10 android:layout_height="wrap_content"
11 android:layout_marginLeft="10px"
12 android:layout_marginRight="10px"
13 android:layout_marginTop="25dip"
14 android:drawSelectorOnTop="true"
15 android:prompt="@string/spin" />
16
17</LinearLayout>

array.xml
1<?xml version="1.0" encoding="utf-8"?>
2<resources>
3<string-array name="spinnerItems">
4 <item></item>
5 <item>Books</item>
6 <item>Novels</item>
7 <item>eBooks</item>
8 <item>Android App</item>
9 <item>Learn Android</item>
10 </string-array>
11
12</resources>

EDIT: Die fehlermeldung lautet:
"The method onItemSelected(AdapterView<?>, View, int, long) of type MainActivity must override a superclass method"

— geändert am 06.11.2012, 15:22:57

Antworten
Markus
  • Forum-Beiträge: 20

06.11.2012, 15:59:18 via Website

Dumme Frage: Wo finde ich diese einstellungen?
Habe eigentlich alles bei Standard belassen so wie es angelegt wurde

Antworten
Markus
  • Forum-Beiträge: 20

06.11.2012, 16:45:03 via Website

Vielen Dank für die schnelle Hilfe.
Jetzt aber noch eine frage. Wenn ich die App starte wird mir im unteren Bereich eine Meldung ausgegeben welche auswahl selektiert ist.
Kan ich das umstellen das diese Meldung erst kommt sobald ich dort etwas auswähle?
Ich stelle es mir so vor
App wird gestartet und der Spinner ist leer
_________________________
|-eintrag ist leer------------ | V |
-------------------------------------------
Nachdem der Benutzer drauf klickt und etwas auswählt wird im Spinner ein Eintrag angezeigt.
Und im Unteren bereich soll dann die Meldung ausgegeben werden was ausgewählt wurde
_________________________
|--Auto ist ausgewählt-----| V |
-------------------------------------------

Antworten
Gelöschter Account
  • Forum-Beiträge: 694

06.11.2012, 17:29:46 via Website

Hm? Wer selektiert denn den ersten Eintrag? Wenn Deine App das nicht macht dann wird wohl der onItemSelected immer durchlaufen. Darüber habe ich mir noch nie Gedanken gemacht da ich immer explizit selektiere.

Du könntest Dir in der Activity eine Variable einbauen und im onItemSelected prüfen ob zum ersten oder wiederholten Mal selektiert wird:

1private boolean itemSelected = false;
2
3@Override
4public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
5 if (itemSelected) {
6 // Anzeigen
7 } else {
8 itemSelected = true;
9 }
10}

— geändert am 06.11.2012, 17:30:20

Antworten