2011-04-27 9 views
1

아이콘으로 gridview를 동적으로 채우려고합니다. 나는 gridview hello 튜토리얼을 따라 갔다. 그러나 이미지가있는 배열이 항상 똑같은 것은 아닙니다. 이전의 동작에 따라 아이콘 이름으로 구성된 다른 image array이 제공됩니다 (비누 응답에서 추출). agenda => agenda.png. 배열을 반복하고 R.drawable + icon_name으로 추가하여 배열을 만들고 싶습니다. 그러나 R.drawable은 요청 된 정수 배열을 구문 분석 할 수 없습니다. 시도 ...구문 분석 오류 - Android java

대신

Integer icon= Integer.valueOf("R.drawable."+image.get(i)); 

public class ImageAdapter extends BaseAdapter 
{ 
    private Context mContext; 
    final ArrayList<String> image = getIntent().getStringArrayListExtra("image"); 

    public ImageAdapter(Context c) { 
     mContext = c; 
    } 

    public int getCount() { 
     return icoontjes.size(); 
    } 

    public Object getItem(int position) { 
     return null; 
    } 

    public long getItemId(int position) { 
     return 0; 
    } 

    public ArrayList<Integer> icoontjes; 
    { 
     for (int i=0; i<image.size(); i++){ 
      Integer icon= Integer.valueOf("R.drawable."+image.get(i)); 
      icoontjes.add(icon); 
     } 
    } 

    // create a new ImageView for each item referenced by the Adapter 
    public View getView(int position, View convertView, ViewGroup parent) { 
     ImageView imageView; 
     if (convertView == null) { // if it's not recycled, initialize some attributes 
      imageView = new ImageView(mContext); 
      imageView.setLayoutParams(new GridView.LayoutParams(85, 85)); 
      imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); 
      imageView.setPadding(8, 8, 8, 8); 
     } else { 
      imageView = (ImageView) convertView; 
     } 

     imageView.setImageResource(icoontjes.get(position)); 
     return imageView; 
    } 
} 

답변

3

사용할 수 있습니다

for (int i=0; i < image.size(); i++) { 
    Integer icon = getResources().getIdentifier(image.get(i), "drawable", "your.package"); 
    icoontjes.add(icon); 
} 

여기에서 your.package은 귀하의 안드로이드 애플리케이션 (귀하가 static final R class을 정의한 패키지)의 기본 패키지입니다.

이렇게하면 icon 변수는 image.get(i)을 기반으로 드로어 블 ID를 보유하게됩니다.

+0

이 접근 방식이 더 좋아 보인다. – Selvin

+0

thx가 나를 위해 일했다 !! – Swellwave

1

내가 유에게 대답을 줄 수 있지만 (정말해야하지)이하지 말아야 할

R.class.getField("R.drawable."+image.get(i)).getInt(null)