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.

InformationsquelleAutor Brian | 2010-09-10
Schreibe einen Kommentar