0

2 つの TextView と 1 つの ImageView を含む ListView を作成しています。

Hashmap を使用して SimpleAdapter にデータを渡しているので、画像の ID を文字列に変換し、後で SimpleAdapter でそれらを整数に戻して画像リソースを設定します。

しかし、それはうまくいかないようです。

関連するコードは次のとおりです。

私の活動の作成

clubImages = new Integer[] {
    R.drawable.pic1, R.drawable.pic2,
    R.drawable.pic3, R.drawable.pic4,
    R.drawable.pic5                
};

ListView lv = (ListView)findViewById(android.R.id.list);

// create the grid item mapping
String[] from = new String[] {"image"};
int[] to = new int[] {R.id.club_image};

// prepare the list of all records
List<HashMap<String, String>> fillMaps = new ArrayList<HashMap<String, String>>();
for(int i = 0; i < eventTitles.length; i++){
    HashMap<String, String> map = new HashMap<String, String>();

    map.put("image", getString(clubImages[i]));
    fillMaps.add(map);
}

// fill in the grid_item layout
SimpleAdapter adapter = new MySimpleAdapter(this, fillMaps, R.layout.eventview_row, from, to);
lv.setAdapter(adapter);

シンプルアダプタークラス

public class MySimpleAdapter extends SimpleAdapter {

    private List<HashMap<String, String>> results;

    public MySimpleAdapter(Context context, List<HashMap<String, String>> data, int resource, String[] from, int[] to) {
        super(context, data, resource, from, to);
        this.results = data;
    }

    public View getView(int position, View view, ViewGroup parent){

        Typeface type = Typeface.createFromAsset(getAssets(), "fonts/aircruiser.ttf");
        View v = view;
        if (v == null) {
            LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            v = vi.inflate(R.layout.eventview_row, null);
        }

        mClubImageImageView = (ImageView) v.findViewById(R.id.club_image);        

        int ClubImageHelper = Integer.parseInt(results.get(position).get("image").toString());
        mClubImageImageView.setImageResource(ClubImageHelper);

        return v;
    }
}

私のlogcatのエラー

E/AndroidRuntime(19406): java.lang.NumberFormatException: unable to parse 'res/drawable-hdpi/pic1.png' as integer
4

2 に答える 2

2

R.drawable.pic1として渡してからString、それを解析して戻すことはできませんInteger。これは機能しません。代わりに、最初のIntegerドローアブルIDを直接HashMap:に渡します。

List<HashMap<String, Integer>> fillMaps = new ArrayList<HashMap<String, Integer>>();
    for(int i = 0; i < eventTitles.length; i++){
        HashMap<String, Integer> map = new HashMap<String, Integer>();

        map.put("image", clubImages[i]);
        fillMaps.add(map);
    }

私はあなたが何を望んでいるのか理解したいと思います。アダプタに渡したいデータを保持するクラスを作成できます。次に例を示します。

class DataObject {
   int imageId;
   String firstString;
   String secondString; // add here any string that you want to put in your list

   public DataObject(String firstString, String secondString, int imageId) {
       this.imageId = imageId;
       this.firstString = firstString;
       this.secondString = secondString;
   }
}

次に、アダプターのリストを作成します。

List<HashMap<String, DataObject>> fillMaps = new ArrayList<HashMap<String, DataObject>>();
    for(int i = 0; i < eventTitles.length; i++){
        HashMap<String, DataObject> map = new HashMap<String, DataObject>();

        map.put("image", new DataObject("First String", "second String", clubImages[i]));
        fillMaps.add(map);
    }

このgetView()メソッドでは、を取得し、DataObjectそのコンテンツデータを自由に使用します。

于 2012-04-07T16:10:31.990 に答える
0

ここ にあなたを助けるかもしれない良い例があります

ここに画像の説明を入力

于 2012-04-07T21:14:36.663 に答える