2015-10-20 96 views
0

我的問題是,我想在Viewpager中添加圖像。我試圖實現這一點,我成功地實現了它。但現在在ViewPager文本顯示與字符串[]值,我想要轉換此字符串到可繪製的圖像,是有可能,請幫助我, 我會提供一點代碼爲理解我的問題見下文,可以將String [] =「hello」;到可繪製的圖像文件夾?

class TestFragmentAdapter extends FragmentPagerAdapter implements  IconPagerAdapter { 

private static String image1="R.drawable.splash"; 
private static String image2="R.drawable.splash"; 
private static String image3="R.drawable.splash"; 
private static String image4="R.drawable.splash"; 

protected static final String[] CONTENT = new String[] { image1, image2, image3, image4 }; 
protected static final int[] ICONS = new int[] { 
     // R.drawable.perm_group_calendar, 
     // R.drawable.perm_group_camera, 
     // R.drawable.perm_group_device_alarms, 
     //R.drawable.perm_group_location 
}; 

private int mCount = CONTENT.length; 

public TestFragmentAdapter(FragmentManager fm) { 
    super(fm); 
} 

@Override 
public Fragment getItem(int position) { 
    return TestFragment.newInstance(CONTENT[position % CONTENT.length]); 
} 

@Override 
public int getCount() { 
    return mCount; 
} 

@Override 
public CharSequence getPageTitle(int position) { 
    return TestFragmentAdapter.CONTENT[position % CONTENT.length]; 
} 

@Override 
public int getIconResId(int index) { 
    return ICONS[index % ICONS.length]; 
} 

public void setCount(int count) { 
    if (count > 0 && count <= 10) { 
     mCount = count; 
     notifyDataSetChanged(); 
    } 
} 
} 
+0

相反字符串圖像1 =「R.drawable.splash」的,你可以使用int image1 = R.drawable.splash;並使用CONTENT數組類型作爲int。它可能適合你。 –

+0

你會提示我一些代碼行嗎? –

+0

將你的int圖像引用id傳入TestFragment並直接在你的片段中使用它來顯示圖像 –

回答

1
try { 
     //packagename+sourceID,you should replace this String value to yours 
     String sourceString = "com.yourpackagename.R.drawable.splash"; 
     StringBuffer stringBuffer = new StringBuffer(); 
     String[] splits = sourceString.split("[.]"); 

     for (int i = 0; i < splits.length - 2; i++) { 
      if (i != 0) 
       stringBuffer.append("."); 
      stringBuffer.append(splits[i]); 
     } 
     stringBuffer.append("$"); 
     stringBuffer.append(splits[splits.length - 2]); 

     Class<?> cls = Class.forName(stringBuffer.toString()); 

     int idValue = cls.getField(splits[splits.length - 1]).getInt(splits[splits.length - 1]); 

     Bitmap image = BitmapFactory.decodeResource(context, idValue); 
     //this is what you want! 
     Drawable imageDrawable = new BitmapDrawable(image); 

    } catch (ClassNotFoundException e) { 
     e.printStackTrace(); 
    } catch (IllegalAccessException e) { 
     e.printStackTrace(); 
    } catch (NoSuchFieldException e) { 
     e.printStackTrace(); 
    } 
相關問題