首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

怎的动态获取R.id

2013-02-25 
怎样动态获取R.id.String[] rownamenew String[] {Id,LockType,HotelId,RoomId,UserId,CheckI

怎样动态获取R.id.
String[] rowname=new String[] {"Id","LockType","HotelId","RoomId","UserId","CheckInTime","CheckOutTime"};
 int[] rid=new int[rowname.length];
 for(int i=0;i<rowname.length;i++)
 {
 
 rid[i]=R.id.rowname[i];
 
                       //一般 R.id.username   这样固定获取是没问题的,但是怎么动态获取。。
 }
[解决办法]
可以利用反射,根据提供的name取得id值

// 依据name取得Field对象  
 Field f = R.drawable.class.getField(name);  
// 取得int值  
int resId = f.getInt(R.drawable.class) ;

http://blog.csdn.net/tibib/article/details/7323022
[解决办法]
5楼说的对,要利用反射。参考代码:


private static Class<?> mId = null;
public static int id(Context c, String name) {
if (mId == null) {
try {
mId = Class.forName(c.getPackageName() + ".R$id");
}catch (ClassNotFoundException localClassNotFoundException) {
localClassNotFoundException.printStackTrace();
return -1;
}
}

try {
Field localField = mId.getField(name);
int i = localField.getInt(name);
return i;
} catch (Exception localException) {
localException.printStackTrace();
}
return -1;
}

热点排行