当前位置: 代码迷 >> Android >> 怎的动态获取R.id
  详细解决方案

怎的动态获取R.id

热度:89   发布时间:2016-05-01 11:34:04.0
怎样动态获取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;
}
  相关解决方案