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

今私がやろうとしているのは、条件に基づいて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);
            }
        }

database(achievement_ID)から値を取得しており、値は(6,2,3)であることに注意してください。

だから私がしたことは、カーソルのアイテムを1つずつ取得し、それをpublicvoidgetDrawablesでチェックすることです。

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

配列imageID(ドローアブル)の値を別のドローアブルイメージに変更したいことを確認してください。

エラーがないので、デバッガーを使用すると、この部分でエラーが発生していることがわかりました。int intReturnDrawable = Integer.parseInt(returnDrawable);

私はandriodを初めて使用しますが、いくつかの基本的な機能を知っています。これを解決するのを手伝っていただけませんか。

4

4 に答える 4

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であるため、これはできません。そして、Stringlike"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 に答える
0

"R.drawable.med...g"ではありませんint。解析できません。"0""-3"..のような値のみを解析できます。

で、(引用符なし)のようgetDrawablesにを返し、そのまま使用します。intR.drawable.med...g

于 2012-09-04T09:26:22.927 に答える