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   这样固定获取是没问题的,但是怎么动态获取。。
  }

解决方案 »

  1.   

    换个思路:
     int[] rid=new int[]{R.id.Id,R.id.LockType,R.id.HotelId,……};
      

  2.   

    可以利用反射,根据提供的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
      

  3.   

    rid[i]=R.id.class.getField(rowname[i]+"");  
    type mismatch: cannot convert from Field to 
     int
      

  4.   

    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;
    }
      

  5.   

    int resId = getResources().getIdentifier("list"+rowname[i], "id", "com.example.xxx);
         rid[i]=resId;就这么简单