두 개의 TextView와 ImageView가 포함 된 ListView를 만들고 있습니다.이미지를 포함하는 ListView에 안드로이드 전달 이미지
해시 맵을 사용하여 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);
simpleadapter 클래스
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;
}
}
오류의 한 OnCreate
E/AndroidRuntime(19406): java.lang.NumberFormatException: unable to parse 'res/drawable-hdpi/pic1.png' as integer
을 도울 수있는 좋은 예입니다. List> 및 List >을 SimpleAdapter에 전달할 수 있습니까? –
@MatsRaemen 제 대답을 편집했습니다. 이것이 당신이 원하는 것이라 희망합니다. – Luksprog
이것은 정확히 필요한 것처럼 보이지만 getView() 메소드의 DataObject에서 calues를 얻는 방법을 알아낼 수 없습니다. 예를 들어 TextView mEventTitleTextView가 있고 TextView의 텍스트를 "First String"값으로 설정하려면 어떻게해야합니까? mEventTitleTextView.setText (results.get (position) .get ("First String")); 위대한 성공이 아니었다 –