在这里遇到了一些问题,并希望你能帮助我。
首先让我澄清一下情况:
我有一个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的新手,但我知道一些基本的功能.. 你能帮我解决一下吗?
答案 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
(无引号),并将其原样使用。