2012-04-13 4 views
0

왜 이것이 제가 가중치에 오류를주는 지 아십니까?문자열 sqlite보기에서 android 형식이 일치하지 않습니다.

에러 :

Type mismatch: cannot convert from element type Object to String

public void viewWeightHandler(View view) { 
    List weights = this.dh.selectAll(); 
    StringBuilder sb = new StringBuilder(); 
    sb.append("Previous Weights:\n"); 
    for (String weight : weights) { 
     sb.append(weight + "\n"); 
    } 
    Log.d("WEIGHT", "weight size - " + weights.size()); 
    output.setText(sb.toString()); 
} 

출력

가중치는 사용자가 생성되는 목록

가중치이다 inputed 것을 인 결과를 표시하는 텍스트 뷰이다. 난이 상기해야 루프 알고 (입력이 1이면 22,3)를 각각 무게가 같은 가중치 표시 삽입 정상적으로

까지

1

22

3

는 어떤 도움

을 이해할 수있을 것이다

답변

1

루프 당신을 변경해보십시오 :..

for (Object weight : weights) { 
    sb.append(weight.toString() + "\n"); 
} 

문제는 데이터베이스에서 가중치를 Object으로 얻는 것입니다. 하지만 어떤 종류의 주조를 먼저 수행하지 않고 ObjectString s로 처리 할 수는 없습니다.

+0

안녕하십니까. 그러나 문제는 무엇 이었습니까? –

+1

@TuffyG 내 대답을 참조하십시오 :'List' 유형의 변수로 반복하지만'weights'의 요소는 목록이 아니므로 오류가 발생합니다. –

+0

도움 주셔서 감사합니다. –

2

난 당신이 (for 루프 향상된 사용) 가중치를 반복에서 오류를 만들 생각 :

for (List weight : weights) { 
     sb.append(weight + "\n"); 
    } 

가 그런 식으로 선언 가중치의 모든 요소 따라서 (목록해야한다는 것을 의미 iterating 변수도리스트이다). 그러나, 나는 이것이 사실이 아니라고 생각한다.

List<String> weights =  this.dh.selectAll(); 
    StringBuilder sb = new StringBuilder(); 
    sb.append("Previous Weights:\n"); 
    for (String weight : weights) { 
     sb.append(weight + "\n"); 
    } 

일반적인 매개 변수가없는 원시 타입을 사용하는 아주 나쁜 연습이다, 그것은 이해하기 어렵습니다, 컨텐츠를 비활성화 : 나는 정확히 목록 저장소, 나는 그것이 String 가정 할 요소의 종류를 알 수없는 지원하고 내가 <String>을 추가하여 (귀하와 같은 오류가 발생할 수 있습니다

을 그러나, 나는 런타임에 컴파일 오류하지만 ClassCastException가 발생하지 않습니다 수정하고 오류를

관련 문제