2015-10-20 99 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(); 
    } 
相关问题