将Array更改为Arraylist,以便我可以操作Array

时间:2012-09-04 09:22:13

标签: java android

在这里遇到了一些问题,并希望你能帮助我。

首先让我澄清一下情况:

我有一个Integer的静态数组,里面是R.drawable.images。代码如下

private   Integer[] imageIDs = {
            //R.drawable.medal_my_first_perxtamp,
            R.drawable.medal..._gray,
            R.drawable.medal_y...te_me_gray,
            R.drawable.medal_t...ring_gray,
            R.drawable.medal_gi...ray,
            R.drawable.medal_a..._gray,
            R.drawable.medal_se..gray,
            R.drawable.medal_p...._gray,
            R.drawable.medal_m..._gray,
            R.drawable.medal_lo.._gray,
            R.drawable.m..._gray,
            R.drawable.med..,
            R.drawable.med..on_gray
          };

现在我要做的是根据条件更改imageID的值,所以现在我已经在getview上添加了这段代码

       sqlAdapter = new SQLiteAdapter(mContext);
        sqlAdapter.openToRead();
        List<Integer> imageIDList = Arrays.asList(imageIDs);
        String query2="Select achievementID  from achievementdata_tb where memberID = 101";
        Cursor cursor2 =sqlAdapter.read(query2);
        if (cursor2 != null && cursor2.moveToFirst()) {
            while(cursor2.moveToNext()){

                val =cursor2.getString(0);
                int val2 = Integer.parseInt(val);
                String returnDrawable = getDrawables(val);
                int intReturnDrawable = Integer.parseInt(returnDrawable);
                imageIDList.set(val2, intReturnDrawable);
            }
        }

请注意,我从数据库(achievement_ID)获取值,值为(6,2,3)

所以我所做的就是逐一获取光标的项目,并在公共空白上检查 getDrawables 包含

        public String getDrawables(String str){
        if (str.equals("3")){
            str= "R.drawable.med...g";
        }
        else if (str.equals("2")){
            str= "R.drawable.med..._me";
        }
        else if (str.equals("6")){
            str= "R.drawable.me...._up";
        }
        return str; 
    }

看到我想将数组imageIDs(可绘制的)的值更改为另一个可绘制的图像。

我没有任何错误所以我使用调试器并发现我在这部分出现错误 int intReturnDrawable = Integer.parseInt(returnDrawable);

我是andriod的新手,但我知道一些基本的功能.. 你能帮我解决一下吗?

4 个答案:

答案 0 :(得分:0)

该语句将抛出错误

int intReturnDrawable = Integer.parseInt(returnDrawable);

returnDrawable是一个无法解析为整数的String时;这是你的情况。

因为当你致电getDrawables()时,它会返回"R.drawable.med..._me",这不是一个整数。

您可以修改getDrawables,如:

public Integer getDrawables(String str){
    if (str.equals("3")){
        return R.drawable.med...g;            
    }
    else if (str.equals("2")){
        return R.drawable.med..._me;
    }
    else if (str.equals("6")){
        return R.drawable.me...._up;
    }
    return 0; 
}

答案 1 :(得分:0)

您不能,因为getDrawable()返回类型字符串。像"R.drawable.med...g"这样的字符串无法解析为Integer

因此,更改getDrawable()的实现会返回正确的int值..

取而代之的是

public int getDrawables(String str){
        int value = 0;
        if (str.equals("3")){
            value = R.drawable.med...g;
        }
        else if (str.equals("2")){
            value = R.drawable.med..._me;
        }
        else if (str.equals("6")){
           value = R.drawable.me...._up;
        }
        return value; 
    }

答案 2 :(得分:0)

R.id.drawable1是一个整数,“R.id.drawable1”是一个无法解析为整数的String。为什么从整数中获取String,而不是String中的整数,而是直接从方法getDrawable()得到整数;

 public String getDrawables(String str){
        int result;
        if (str.equals("3")){
            result= R.drawable.med...g;
        }
        else if (str.equals("2")){
            result= R.drawable.med..._me;
        }
        else if (str.equals("6")){
            result= R.drawable.me...._up;
        }
        return result; 
    }

并将此图片的访问权限更改为以下内容:

sqlAdapter = new SQLiteAdapter(mContext);
        sqlAdapter.openToRead();
        List<Integer> imageIDList = Arrays.asList(imageIDs);
        String query2="Select achievementID  from achievementdata_tb where memberID = 101";
        Cursor cursor2 =sqlAdapter.read(query2);
        if (cursor2 != null && cursor2.moveToFirst()) {
            while(cursor2.moveToNext()){

                val =cursor2.getString(0);
                int val2 = Integer.parseInt(val);
                int intReturnDrawable = getDrawables(val);
                imageIDList.set(val2, intReturnDrawable);
            }
        }

答案 3 :(得分:0)

"R.drawable.med...g"不是int。你无法解析它。您只能解析"0""-3" ...

等值 在getDrawables

,返回int,如R.drawable.med...g(无引号),并将其原样使用。