SimpleAdapter, Text und Bild in der spinner
Ich habe da ein kleines problem. Nun, lassen Sie mich ersten Staat, was ich versuche zu erreichen.
Ich hatte ein spinner, zieht strings aus einem array gespeichert.
So brauchen Sie nicht, um es zu Lesen, obwohl:
ArrayAdapter<?> healthadapter = ArrayAdapter.createFromResource(this, R.array.health, android.R.layout.simple_spinner_item);
mHealthSpin = (Spinner) findViewById(R.id.health_spin);
healthadapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mHealthSpin.setAdapter(healthadapter);
Einfach und fast ausreichend. Ich würde gerne ein Bild hinzufügen, um der Spinner.
die RadioButton
ist nicht notwendig. Also die Spinner
sollte pop-up und haben eine Liste:
TEXT *BILD* TEXT2 *BILD* TEXT3 *BILD*
Bisher habe ich eine benutzerdefinierte SimpleAdapter.
Hier ist das Problem!! :
Bis der text kommt aber nicht das Bild.
Hier ist der code:
public class stageadapter extends SimpleAdapter {
private Context localContext;
private ArrayList<HashMap<String, Object>> localList;
public stageadapter(Context context, ArrayList<HashMap<String, Object>> list, int resource, String[] from, int[] to) {
super(context, list, resource, from, to);
localContext = context;
localList = list;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (null == convertView) {
LayoutInflater inflater = (LayoutInflater) localContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.stagerow, null);
}
TextView name = (TextView) convertView.findViewById(R.id.stage_name);
name.setText((String) localList.get(position).get("Name"));
ImageView icon = (ImageView) convertView.findViewById(R.id.stage_icon);
icon.setImageResource(R.drawable.icon);
return convertView;
}
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
if (null == convertView) {
LayoutInflater inflater = (LayoutInflater) localContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.stagerow, null);
}
TextView name = (TextView) convertView.findViewById(R.id.stage_name);
name.setText((String) localList.get(position).get("Name"));
ImageView icon = (ImageView) convertView.findViewById(R.id.stage_icon);
icon.setImageResource(R.drawable.icon);
return convertView;
}
}
Plane ich die Verwendung einer switch
- Anweisung, um verschiedene Bilder zu jedem Namen. allerdings hörte ich hier, bis ich kann bekommen ein Bild, um zu zeigen.
Wie ich rufe:
ArrayList<HashMap<String, Object>> list = new ArrayList<HashMap<String, Object>>();
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("Name", "One");
map.put("Icon", R.drawable.icon);
list.add(map);
map = new HashMap<String, Object>();
map.put("Name", "Two");
map.put("Icon", R.drawable.icon);
list.add(map);
mStageSpin = (Spinner) findViewById(R.id.stage_spin);
stageadapter adapter = new stageadapter(getApplicationContext(), list, R.layout.stagerow, new String[]{"Name", "Icon"}, new int[]{R.id.stage_name, R.id.stage_icon});
mStageSpin.setAdapter(adapter);
Die Antwort bei mir ist in die Kommentare.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Entfernen Sie die folgende Zeile -- seine verwirrend, dass Ihr adapter:
healthadapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
Das problem ist in getView Sie zugeordnet haben, den text entsprechend Ihrer position mit
((TextView) convertView.findViewById(R. id.name)) .setText((String) data.get("Name"));
Aber für Bild-u verwendet haben, die gleiche Ressource, d.h.
((Bildansicht) convertView.findViewById(R. id.Symbol)) .setImageResource(R. drawable.Symbol);
Müssen Sie die "Daten" hashmap Liste, und weisen Sie das Bild hier
Ja @Vicky, du hast Recht.
Für Bild sollte es sein
Basierend auf den obigen Antworten, aber mit ein paar Veränderungen, um den code vereinfachen und machen es Arbeit für die dropdown-als auch. Definieren Sie zunächst die xml-Datei für das row-layout, das Sie wollen. In diesem Fall ein textview und ein Bild in einer Zeile:
text_image_spinner_layout.xml
Erstellen Sie dann die Klasse bauen, die jede Zeile als nötig:
TextImageAdapter.java
Und jetzt müssen Sie nur bauen die spinner-adapter bei der Instanziierung von es. Geben Sie die "Sachen" ...: