读书人

怎的动态获取R.id

发布时间: 2013-02-25 10:23:36 作者: rapoo

怎样动态获取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;
}

读书人网 >Android

热点推荐