2017-02-28 1 views
2

Ich bin durchsuchbare Spinner in meiner App integrieren. Unten ist mein CodeProblem in durchsuchbaren Spinner-Adapter Android

gradle Datei

compile 'com.toptoche.searchablespinner:searchablespinnerlibrary:1.3.1' 

XML-Datei

<com.toptoche.searchablespinnerlibrary.SearchableSpinner 
    android:id="@+id/spinner" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    app:hintText="Select Country"/> 

Man.java

public class MainActivity extends AppCompatActivity { 

SearchableSpinner mSearchableSpinner; 
ArrayList<GetCountry> mGetCountries; 
PriorityAdapter mPriorityAdapter; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    mSearchableSpinner = (SearchableSpinner) findViewById(R.id.spinner); 

    mGetCountries = new ArrayList<>(); 
    GetCountry mGetCountry = new GetCountry(); 
    mGetCountry.setId("1"); 
    mGetCountry.setName("India"); 
    mGetCountries.add(mGetCountry); 

    GetCountry mGetCountry2 = new GetCountry(); 
    mGetCountry2.setId("2"); 
    mGetCountry2.setName("USA"); 
    mGetCountries.add(mGetCountry2); 


    GetCountry mGetCountry3 = new GetCountry(); 
    mGetCountry3.setId("3"); 
    mGetCountry3.setName("UK"); 
    mGetCountries.add(mGetCountry3); 

    GetCountry mGetCountry4 = new GetCountry(); 
    mGetCountry4.setId("4"); 
    mGetCountry4.setName("CHINE"); 
    mGetCountries.add(mGetCountry4); 

    GetCountry mGetCountry5 = new GetCountry(); 
    mGetCountry5.setId("5"); 
    mGetCountry5.setName("MALASIYA"); 
    mGetCountries.add(mGetCountry5); 

    mPriorityAdapter=new PriorityAdapter(mGetCountries); 
    mSearchableSpinner.setAdapter(mPriorityAdapter); 
} 


public class PriorityAdapter extends ArrayAdapter<GetCountry> { 

    ArrayList<GetCountry> list; 

    public PriorityAdapter(ArrayList<GetCountry> list) { 
     super(MainActivity.this, R.layout.spin_layout, list); 
     this.list = list; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { // Ordinary 


     return initView(position, convertView, parent); 
    } 

    @Override 
    public View getDropDownView(int position, View convertView, 
           ViewGroup parent) { // This view starts when we click the 
     // spinner. 
     return initView(position, convertView, parent); 
    } 

    public View initView(int position, View convertView, ViewGroup parent) { 

     LayoutInflater inflator = getLayoutInflater(); 
     convertView = inflator.inflate(R.layout.spin_layout, null); 
     TextView mTextView = (TextView) convertView 
       .findViewById(android.R.id.text1); 
     mTextView.setText(list.get(position).getName()); 
     return convertView; 
    } 

} 

} 

Wenn i über Code laufen lasse ich Ausgabe wie unter Bild erhalten. Benutzerdefinierte Arraylist Daten nicht anzeigen, es ist Drucken Müll Wert von Java jedes Element Spinner Output

Jede Idee, wie kann ich das lösen?

EDIT

public class PriorityAdapter extends ArrayAdapter<GetCountry> { 

    ArrayList<GetCountry> list; 

    public PriorityAdapter(ArrayList<GetCountry> list) { 
     super(MainActivity.this, R.layout.spin_layout, list); 
     this.list = list; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { // Ordinary 


     return initView(position, convertView, parent); 
    } 

    @Nullable 
    @Override 
    public GetCountry getItem(int position) { 
     return super.getItem(position); 
    } 



    @Override 
    public View getDropDownView(int position, View convertView, 
           ViewGroup parent) { // This view starts when we click the 

     View view = convertView; 
     LayoutInflater layoutInflater = LayoutInflater.from(getContext()); 
     view = layoutInflater.inflate(R.layout.spin_layout_1, parent, false); 

     TextView tv= (TextView) view.findViewById(R.id.text1); 
     tv.setText(list.get(position).getName()); 
     return view; 

    } 

    public View initView(int position, View convertView, ViewGroup parent) { 


     View view = convertView; 
     LayoutInflater layoutInflater = LayoutInflater.from(getContext()); 
     view = layoutInflater.inflate(R.layout.spin_layout_1, parent, false); 

     TextView tv= (TextView) view.findViewById(R.id.text1); 
     tv.setText(list.get(position).getName()); 
     return view; 
    } 

} 

GetCountry.java

public class GetCountry { 
String name; 
String id; 

public String getName() { 
    return name; 
} 

public void setName(String name) { 
    this.name = name; 
} 

public String getId() { 
    return id; 
} 

public void setId(String id) { 
    this.id = id; 
} 
} 
+0

Ich habe das gleiche Problem und das einzige, was ich hinzufügen kann ist, dass die DropDownView nicht wirklich berücksichtigt wird, sondern die .toString() Ihrer Klasse statt. I don (t wissen, warum, aber es scheint die SpinnerSearchable nicht richtig den Adapter nicht verwendet. Oder wahrscheinlich etwas wir verpassen. Hoffnung jemand helfen kann. Prost – Gary89

+0

Wie dieses Problem zu lösen? Ich bin Das gleiche Problem bekommen? –

Antwort

1

können Sie versuchen, getView und getDropDownView Rückgabewert

wie dies zu ändern;

+0

onur: Ich versuche mit Ihrem Code, aber immer noch das gleiche Problem im Angesicht –

+0

onur: Überprüfen Sie meine Bearbeitung Abschnitt ich versuche nach Ihrem Vorschlag, aber immer noch gleiche Ausgabe im Blick –

+0

Bitte teilen Sie Ihre GetCountry-Klasse, wo Sie setId definiert haben, setName und getName-Methode? –

0

Sie erhalten diese Liste, weil Ihr getView und jede andere im PriorityAdapter deklarierte Methode überhaupt nicht aufruft. Warum also einen benutzerdefinierten Adapter zu verwenden, sondern geht nur für die einfachen Array-Adapter wie unten -

String[] names = new String[]{"India","CHINA","UK","US","MALYSIA"}; 
     ArrayAdapter arrayAdapter = new ArrayAdapter(SearchActivity.this,android.R.layout.simple_spinner_dropdown_item,names); 
     mSearchableSpinner.setAdapter(arrayAdapter); 

diese Zeilen in onCreate Methode Aktivität hinzufügen und Sie werden Ihre richtige Dropdown bekommen.

+0

Eigentlich habe ich benutzerdefinierte Liste, so muss ich benutzerdefinierte Adapter entwerfen. irgendeine Lösungsmöglichkeit? @ B.shruti –

Verwandte Themen