2016-04-28 23 views
1

Ich bekomme Werte von JSON String und fügen Sie es in Arraylist getSpinArrList.Ich habe den entsprechenden Code gepostet.Spinner Artikel nicht in Spinner und Spinner OnClick Listener funktioniert nicht

Mein Problem ist, Spinner zeigt nicht das erste Element und OnItemClick funktioniert nicht in Spinner.

Aber wenn ich Spinner anklicke, kann ich nur die Artikel sehen, die ich von Arraylist bekomme.

MainActivity.java:

Spinner spinCrePage; 

spinCrePage = (Spinner) findViewById(R.id.sp_create_page); 

ArrayAdapter<String> adapter_state = new ArrayAdapter<String>(this, 
      android.R.layout.simple_spinner_item, getSpinArrList); 

adapter_state.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

spinCrePage.setAdapter(adapter_state); 

spinCrePage.setOnItemSelectedListener(this); 


@Override 
    public void onItemSelected(AdapterView<?> parent, View view, int position, 
      long id) { 

     Toast.makeText(getApplicationContext(),"Working" , Toast.LENGTH_SHORT).show(); 

     spinCrePage.setSelection(position); 
     String selState = (String) spinCrePage.getSelectedItem(); 
    // textView.setText("Selected Android OS:" + selState); 

    } 

    @Override 
    public void onNothingSelected(AdapterView<?> parent) { 

    } 
+1

Gibt es irgendwas in getSpinArrList? –

Antwort

1

onItemSelected, müssen Sie mit der Position eines Schalters Fall erstellen. Für jede Position einen Fall erstellen und es mit ur desiered Code implementieren ...

@Override 
public void onItemSelected(AdapterView<?> parent, View view, int position, 
          long id) { 
    switch (position) { 
     case 0: 
      Toast.makeText(getApplicationContext(),"Working" , Toast.LENGTH_SHORT).show(); 
      break; 
     case 1: 
      //code 
      break; 

    } 
} 
0

bitte diesen Code verwenden und diesen Schritten

  1. Liste der Angebote im Spinner Open „res/Werte Folgen /strings.xml "Datei, definieren Sie die Liste der Elemente, die in Spinner (Dropdown-Liste) angezeigt werden.

Datei: res/Werte/strings.xml

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
<string name="app_name">MyAndroidApp</string> 
<string name="country_prompt">Choose a country</string> 
<string-array name="country_arrays"> 
    <item>Malaysia</item> 
    <item>United States</item> 
    <item>Indonesia</item> 
    <item>France</item> 
    <item>Italy</item> 
    <item>Singapore</item> 
    <item>New Zealand</item> 
    <item>India</item> 
</string-array> 

  1. Erstellen Sie eine XML-Datei res/layout/main.xml Verwenden Sie country_arrays in Spinner-Einträgen
<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:orientation="vertical" > 

<Spinner 
    android:id="@+id/spinner1" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:entries="@array/country_arrays" 
    android:prompt="@string/country_prompt" /> 

<Spinner 
    android:id="@+id/spinner2" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" /> 

<Button 
    android:id="@+id/btnSubmit" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Submit" /> 
</LinearLayout> 
  1. -Code Java erstellen Datei MyAndroidAppActivity.java
package com.webastral.drinkin.home; 

import java.util.ArrayList; 
import java.util.List; 
import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.Spinner; 
import android.widget.Toast; 

public class MyAndroidAppActivity extends Activity { 

private Spinner spinner1, spinner2; 
private Button btnSubmit; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    addItemsOnSpinner2(); 
    addListenerOnButton(); 
    addListenerOnSpinnerItemSelection(); 
} 

// add items into spinner dynamically 
public void addItemsOnSpinner2() { 

    spinner2 = (Spinner) findViewById(R.id.spinner2); 
    List<String> list = new ArrayList<String>(); 
    list.add("list 1"); 
    list.add("list 2"); 
    list.add("list 3"); 
    ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, 
      android.R.layout.simple_spinner_item, list); 
    dataAdapter 
      .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    spinner2.setAdapter(dataAdapter); 
} 

public void addListenerOnSpinnerItemSelection() { 
    spinner1 = (Spinner) findViewById(R.id.spinner1); 
    spinner1.setOnItemSelectedListener(new CustomOnItemSelectedListener()); 
} 

// get the selected dropdown list value 
public void addListenerOnButton() { 

    spinner1 = (Spinner) findViewById(R.id.spinner1); 
    spinner2 = (Spinner) findViewById(R.id.spinner2); 
    btnSubmit = (Button) findViewById(R.id.btnSubmit); 

    btnSubmit.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 

      Toast.makeText(
        MyAndroidAppActivity.this, 
        "OnClickListener : " + "\nSpinner 1 : " 
          + String.valueOf(spinner1.getSelectedItem()) 
          + "\nSpinner 2 : " 
          + String.valueOf(spinner2.getSelectedItem()), 
        Toast.LENGTH_SHORT).show(); 
     } 

    }); 
} 

}

Java-Datei erstellen CustomOnItemSelectedListener.java

package com.webastral.drinkin.home; 

import android.view.View; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemSelectedListener; 
import android.widget.Toast; 

public class CustomOnItemSelectedListener implements OnItemSelectedListener { 

public void onItemSelected(AdapterView<?> parent, View view, int pos, 
     long id) { 
    Toast.makeText(
      parent.getContext(), 
      "OnItemSelectedListener : " 
        + parent.getItemAtPosition(pos).toString(), 
      Toast.LENGTH_SHORT).show(); 
} 

@Override 
public void onNothingSelected(AdapterView<?> arg0) { 
    // TODO Auto-generated method stub 
} 

}

Hope This wil Help you 
0

in Ihrer Anwendung, ich glaube, das einzige Mal, wenn der Toast nicht erscheint, wenn Sie das gleiche Element zweimal nacheinander die Auswahl sind. Ich habe deinen Code ausprobiert und es funktioniert gut für mich. Sie möchten möglicherweise die

aus Ihrem Code entfernen. Es hat überhaupt keinen Nutzen. Die OnItemSelected() wird nur ausgelöst, wenn Sie im Spinner ein anderes Element als das vorherige Element auswählen.

Und soweit das Problem von "Spinner nicht das erste Element anzeigen", sollten Sie wahrscheinlich den Inhalt Ihrer Arraylist überprüfen. Sehen Sie, ob etwas während der Ausführung oder etwas entfernt wird. Überprüfen Sie die Schleifen, mit denen Sie Daten in die Arraylist hinzufügen.

"OnClick funktioniert nicht": Ich bin ziemlich sicher, dass der Spinner keinen OnClickListener hat, Spinner OnItemSelectedListener() verwendet.

Verwandte Themen