Wie dynamisch zu füllen, Android spinner mit text + Bild
Dies ist, was ich versuche zu erreichen ich bin in der Lage, dies zu erreichen viel:
War ich in der Lage, fügen Sie text und Bild an einen Spinner, aber die Bilder werden nicht angezeigt in der drop-down-Menü neben dem text. Seine wird nur für das ausgewählte Element der spinner.
Hier ist mein code:
spinner_layout.xml
Das layout mit den wichtigsten Spinner.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<Spinner android:id="@+id/mySpinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
spinner_value_layout.xml
Das layout für die Elemente in den Spinner. Dieser wird aufgeblasen werden über einen Adapter.
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TableRow
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:id="@+id/spinnerTextView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<ImageView
android:id="@+id/spinnerImages"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:contentDescription="@string/app_name"/>"
</TableRow>
</TableLayout>
SpinnerActivity.java
package com.example.spinner;
import android.app.Activity;
import android.os.Bundle;
import android.widget.ImageView;
import android.widget.Spinner;
import android.widget.TextView;
import com.example.tempspinner.R;
public class SpinnerActivity extends Activity {
String[] textArray = { "clouds", "mark", "techcrunch", "times" };
Integer[] imageArray = { R.drawable.clouds, R.drawable.mark,
R.drawable.techcrunch, R.drawable.times };
@Override
protected void onCreate(Bundle savedInstanceState) {
//TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.spinner_layout);
TextView text = (TextView) findViewById(R.id.spinnerTextView);
ImageView imageView =(ImageView)findViewById(R.id.spinnerImages);
Spinner spinner = (Spinner) findViewById(R.id.mySpinner);
SpinnerAdapter adapter = new SpinnerAdapter(this, R.layout.spinner_value_layout, textArray, imageArray);
spinner.setAdapter(adapter);
}
}
SpinnerAdapter.java
package com.example.spinner;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import com.example.tempspinner.R;
public class SpinnerAdapter extends ArrayAdapter<String> {
private Context ctx;
private String[] contentArray;
private Integer[] imageArray;
public SpinnerAdapter(Context context, int resource, String[] objects,
Integer[] imageArray) {
super(context, R.layout.spinner_value_layout, R.id.spinnerTextView, objects);
this.ctx = context;
this.contentArray = objects;
this.imageArray = imageArray;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.spinner_value_layout, null);
}
TextView textView = (TextView) convertView.findViewById(R.id.spinnerTextView);
textView.setText(contentArray[position]);
ImageView imageView = (ImageView)convertView.findViewById(R.id.spinnerImages);
imageView.setImageResource(imageArray[position]);
return convertView;
}
}
danke für diese Frage, die mir dabei helfen eine Menge!
InformationsquelleAutor Ash Ash | 2014-06-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie, diese..
Sie erstellt haben, anzeigen nur für die ausgewählten Artikel nicht für DropDownView. Ich fügte hinzu, dass die Ansicht, die angezeigt wird
Scheint nicht zu funktionieren für mich, getDropDownView(), getView() nie aufgerufen werden, aus irgendeinem Grund in meinem Szenario, so getCustomView() nie aufgerufen wird. Irgendeine Idee warum? danke.
Kurzes update, ich habe mein Problem gelöst wie oben beschrieben. Beispiel funktioniert sehr gut - vielen Dank für das posten 🙂
Ich wünschte, ich könnte die up-vote deine Antwort mehr als einmal. Ich habe schon schlägt meinen Kopf gegen die Wand über diesem genau das gleiche problem seit einer Woche jetzt. Ich bin mit einem benutzerdefinierten
SimpleCurosrAdapter
statt einerArrayAdapter
, aber deine Methode funktioniert für mich gut. Nochmals vielen Dank, und einen schönen Tag!InformationsquelleAutor Hariharan
Versuchen, diese
Erstellen Sie ein neues layout im inneren res/layout/ mit beliebigen Namen z.B. spinner_value_layout.xml
Erstellen Sie eine neue Klasse SimpleImageArrayAdapter
und schließlich verwenden Sie diese auf Ihre Klasse, wo Sie auf der Durchreise sind id der spinner
Ausgabe:-
InformationsquelleAutor Sunil
Spinner row.xml können Sie entfernen, meine unnötige drawable-Stile und Bilder
Aktivität layout act_add_new_prog.xml
Aktivität Klasse
ItemModel für jede Zeile
Und Adapter-Klasse
InformationsquelleAutor Sam