3

这里有一些问题,希望你能帮助我。

让我先澄清一下情况:

我有一个静态整数数组,其中内部是 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
          };

现在我要做的是根据条件更改 imageIDs 的值,所以现在我在 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);
            }
        }

请注意,我从数据库(成就 ID)中获取值,值为 (6,2,3)

所以我所做的是一个一个地获取光标的项目并在公共 void 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);

我是安卓新手,但我知道一些基本功能。你能帮我解决这个问题吗?

4

4 回答 4

0

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

in getDrawables,返回一个int, like R.drawable.med...g(不带引号)并按原样使用它。

于 2012-09-04T09:26:22.927 回答
0

语句会抛出错误

int intReturnDrawable = Integer.parseInt(returnDrawable);

whenreturnDrawable是一个不能被解析成整数的字符串;这是你的情况。

因为当您调用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; 
}
于 2012-09-04T09:25:18.997 回答
0

你不能因为,返回getDrawable()类型是String。并且 String 之类的"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; 
    }
于 2012-09-04T09:25:24.287 回答
0

R.id.drawable1 是一个整数,“R.id.drawable1”是一个不能解析为整数的字符串。为什么你从整数中获取字符串,而不是从字符串中获取整数,而不是你可以直接从方法 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);
            }
        }
于 2012-09-04T09:25:43.770 回答