spinner mit bild aus R.array [gelöst]

onip

onip

Neues Mitglied
10
hallo zusammen,

so langsam geht es ans eingemacht bei mir.
nach einer eingewöhnungsphase mit den layouts,
versuche ich nun div. elemente zu verändern.
beginnen tu ich mit spinner (item mit bild und text), wofür es kein view gibt.

diesen artikel hab ich gefunden, der mir plausibel erscheint
und mit dem ich mit einer layout.xml die ausgabe des items bestimmen kann.

ich hab jedoch ein problem mit dem SimpleCursorAdapter.
der benötigt datenbank einträge, so wie ich das verstehe.
ich möchte aber auf mein R.array zugreifen, das so aussieht:
Code:
<string-array name="shipname">
    <item>Enterprise NCC-1701</item>
    <item>Enterprise NCC-1701-A</item>        
    <item>Enterprise NCC-1701-B</item>
    <item>Enterprise NCC-1701-C</item>
    <item>Enterprise NCC-1701-D</item>
</string-array>

<string-array name="shipimage">
    <item>ncc1701</item>
    <item>ncc1701a</item>
    <item>ncc1701b</item>
    <item>ncc1701c</item>
    <item>ncc1701d</item>
</string-array>
könnt ihr mir sagen ob ich evtl. shipname und shipimage in einen cursor übertragen kann,
oder ob es ne andere möglichkeit gibt die ausgabe eines spinners zu verändern (bild und text je item)?

// edit
ich habs hinbekommen

der aufruf in der activity
Code:
// spinner mit bild
Spinner spin = (Spinner) findViewById(R.id.spinner_img_txt);
String[] from = new String[] { "image", "name"};
int[] to = new int[] { R.id.spinner_image, R.id.spinner_text};

String[] simage = getResources().getStringArray(R.array.shipimage);
String[] sname = getResources().getStringArray(R.array.shipname);
List<HashMap<String, String>> fillMaps = new ArrayList<HashMap<String, String>>();
for (int i = 0; i < sname.length; i++) {
    HashMap<String, String> map = new HashMap<String, String>();
    
    int imgID = getResources().getIdentifier(simage[i], "drawable", "gb.dashboard");
    if (imgID <= 0){
        imgID = R.drawable.ncc1701;
    }
    String imgIDstr = String.valueOf(imgID);
    
    map.put("image", imgIDstr);
    map.put("name", sname[i]);
    fillMaps.add(map);
}
SimpleAdapter adapter = new SimpleAdapter(this, fillMaps, R.layout.spinner_entry, from, to);
adapter.setViewBinder(new SpinnerViewBinder());
spin.setAdapter(adapter);
das layout
Code:
<?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="wrap_content"
    android:orientation="horizontal" >

<ImageView 
        android:id="@+id/spinner_image"
        android:layout_width="40sp"
        android:layout_height="40sp"
        android:contentDescription=""
 />
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/spinner_text"
    android:textColor="#000000"
    style="@style/TextNormal"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:gravity="center_vertical"
    android:paddingLeft="6dip"
    android:minHeight="?android:attr/listPreferredItemHeight"
/>

</LinearLayout>
und hier die verarbeitung
Code:
package gb.dashboard.helper;

import android.view.View;
import android.widget.ImageView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import gb.dashboard.R;

public class SpinnerViewBinder implements SimpleAdapter.ViewBinder {

    public boolean setViewValue(View view, Object data, String text) {
        int viewId = view.getId();
        switch (viewId) {
        case R.id.spinner_text:
            TextView mView = (TextView) view;
            mView.setText(text);
            break;

        case R.id.spinner_image:
            ImageView mIconView = (ImageView) view;
            int imgID = Integer.valueOf(text);
            mIconView.setImageResource(imgID);
        }
        return true;
    }

}
wie ihr seht hab ich mir ordentlich was zusammen gesucht.
was mich noch stört ist das aussehen, aber das bekommt ich noch in den griff.
danke euch allen ;)

wer vorschläge für eine verbesserung hat, möge doch was dazu schreiben.
 
Zuletzt bearbeitet:

Ähnliche Themen

B
Antworten
6
Aufrufe
1.051
jogimuc
J
R
  • Robby1950
2
Antworten
23
Aufrufe
1.022
Robby1950
R
B
Antworten
4
Aufrufe
496
bb321
B
Zurück
Oben Unten