来自android

时间:2016-01-24 20:36:17

标签: android

我有

String[] x1 = new String[] { "05:30", "07:20", "13:30", "21:30"};
String[] x2 = new String[] { "08:30", "01:20"}; 
String[] x3 = new String[] { "12:30", "00:20", "13:54"}; 

从数据库中我收到x1或x2或x3名称。

String get_x = null;
Cursor cursor = db.rawQuery(selectQuery, null);
if (cursor.moveToFirst()) {
    do {
        get_x = cursor.getString(0); // get_x will have value x1 or x2 or x3
    } while (cursor.moveToNext());
}

然后我想获得返回x [1或2或3]的大小 例如。 int size = x1.length,其中x1是get_x string的值。

我试过

int size = get_x.length; 

但没有工作。 'size'将等于get_x的长度,而不是x1.length的长度

2 个答案:

答案 0 :(得分:1)

听起来您需要为您的程序使用更合适的数据结构。您有几种选择:

  1. 将值直接存储在数据库中,而不是存储充当" index"的值。为了价值。
  2. 更改数据库以返回int值(例如1,2或3),而不是String(例如"x1""x2",{{1} })并使用数组或"x3"而不是三个单独的变量。数据库中的List值将作为数组的索引或int
  3. 保持数据库不变,并使用List而不是三个不同的变量。现在,您可以使用数据库中的值作为Map
  4. 的索引

    以下有关Stack Overflow的问题与您的问题有关:

    Is it possible to create variables at runtime in Java?

    How to create a variable with a user-defined name in Java?

答案 1 :(得分:0)

以下是使用反射:)的答案。 将get_x传递给方法。 " YourClassName" - 是您的活动的名称(或托管您的代码的类),替换它。

            public void getSize(String arrayParamName){
                Field[] fields = YourClassName.class.getDeclaredFields();

                for (Field field : fields) {

                    //gives the names of the fields
                    if(field.getName().equals(arrayParamName)) {
                        System.out.println(field.getName());
                        try {

                            String[] returnedArrayFromDB = (String[])field.get(CameraActivity.this);
                            System.out.println("length of " +field.getName() + ":  "+ returnedArrayFromDB.length);
                            System.out.println("first value of array " +returnedArrayFromDB[0]);


                        } catch (IllegalAccessException e) {
                            e.printStackTrace();
                        }
                    }
                }
            }