2016-04-07 13 views
0

Ich habe versucht, herauszufinden, wie ich meinen Spinner für Tage gerade arbeiten lassen, und kann nichts finden, um mir zu helfen. Mein Spinner zeigt die Werte nicht an. Der Spinner öffnet sich und die Leerzeichen für jeden Wert sind dort, aber sie sind alle leer. Ich habe versucht, ein ArrayList<String>, und auch ein String[] Array, von denen keiner einen Unterschied gemacht, aber muss ich einen über den anderen verwenden? Ich habe viele verschiedene Arten von ArrayAdaptern ausprobiert, aber keiner von ihnen hat funktioniert. Die eine in meinem Code unten ist diejenige, die am nächsten arbeitet (wie oben beschrieben), und die anderen 3 sind Vorschläge, die ich online gesehen habe. Ich denke, mein Hauptproblem ist in meinem Array-Adapter, aber ich bin mir nicht sicher.Android Spinner zeigt Array nicht an, zeigt aber Orte

Hier meine Java-Klasse ist

@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_info); 

    engineSpinner = (Spinner)findViewById(R.id.rockets); 
    engineNameList = StagesData.getEngineNameList(); 
    engStrList = engineNameList.toArray(new String[engineNameList.size()]); 

    adapter = new ArrayAdapter<String>(InfoActivity.this, android.R.layout.simple_spinner_item, engStrList); 
    // adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, R.array.array_engines); 
    // adapter = new ArrayAdapter<String>(InfoActivity.this, android.R.layout.simple_dropdown_item_1line, R.id.rockets, engStrList); 
    // adapter = ArrayAdapter.createFromResource(InfoActivity.this, android.R.layout.simple_spinner_item, R.array.engines); 

    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    engineSpinner.setAdapter(adapter); 
    engineSpinner.setSelection(0); 

Hier mein xml Spinner Setup ist

<TableRow> 
     <TextView 
      android:text="@string/rocket" 
      android:padding="3dp"/> 
     <Spinner 
      android:id="@+id/rockets" 
      android:gravity="right" 
      android:entries="@array/engines" 
      android:clickable="true" 
      android:textColor="@color/colorblack" 
      android:spinnerMode="dropdown" 
      android:backgroundTint="@color/colorPrimary" /> 
    </TableRow> 

Und schließlich, das ist mein String-Array Datei, die ich aus ziehen wollte (platziere ich meine Zeichenfolge -array in seiner eigenen Datei im Ordner Werte, oder geht es in der Zeichenkette Datei, ich habe beide gesehen und weiß nicht, Danke,)

Um meine Fragen zu rekapitulieren, muss ich ArrayList<String> oder String[] verwenden, wie richte ich meinen ArrayAdapter ein und wo muss ich mein String-Array platzieren?
Vielen Dank im Voraus!

+0

Ihre Probleme gelöst wurde? –

+0

Ja war es. Entschuldigung, ich habe nicht gleich reagiert. Ich danke dir sehr. Ich bin neu in Android-Programmierung und ich denke, meine erste App ist ein bisschen zu kompliziert zu tun, als meine erste, aber es kommt mit. Danke nochmal. –

Antwort

0

ich erstellen Sie Ihre Probe und funktioniert gut für mich

Wechsel
engStrList = engineNameList.toArray(new String[engineNameList.size()]); 
adapter = new ArrayAdapter<String>(InfoActivity.this, android.R.layout.simple_spinner_item, engStrList); 

zu

engStrList = new String[]{"a","b","c"}; 
adapter = new ArrayAdapter<String>(InfoActivity.this, android.R.layout.simple_spinner_item, engStrList); 

Damit Sie sollten meine Vermutung ist, zu überprüfen, was StagesData.getEngineNameList() zurückkehrt.


Auch wenn Sie, was Ihre String-Array zu verwenden, ist dies der richtige Weg

ArrayAdapter adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, getResources().getStringArray(R.array.engines)); 

hoffe, das hilft

+0

DANKE SO VIEL, ich hatte versucht, das seit Tagen zu arbeiten. Ich habe deinen letzten Vorschlag ausprobiert, es hat perfekt funktioniert. Ich denke, dass meine .getEngineNameList() die String-Array-Liste nicht zurückgegeben hat, wie ich gehofft hatte. –