2012-04-13 53 views
0

任何人都知道這是爲什麼給我一個權重錯誤?Android的類型不匹配字符串sqlite視圖

錯誤:

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

輸出是一個TextView顯示結果

重量就是用戶已經inputed

權值所產生的列表。

據我知道這上面應該循環併爲每個重量應該將其插入到權重而顯示爲這樣的(如果輸入爲1,22,3)

1

22

3

任何幫助,將理解

回答

1

試着改變你的for循環:。

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

問題是您的數據庫中的權重類型爲Object。但是,你不能只把Object s當作String s,而不要先做某種投射。

+0

謝謝你,先生。但是問題是什麼? – 2012-04-13 09:47:43

+1

@TuffyG指的是我的答案:你使用'List'類型的變量進行迭代,然而'weights'中的元素不是列表,因此是錯誤。 – 2012-04-13 09:50:45

+0

感謝您的幫助 – 2012-04-13 09:56:22

2

我想你在迭代的權重犯錯誤(使用增強的for循環):

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

聲明這樣的說法,指的權重中的每個元素應該是列表(因此迭代變量也是列表)。不過,我認爲情況並非如此。我不知道究竟該列表店,我會承擔什麼樣的元素是String

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

這是非常不好的做法,使用原始類型,沒有通用的參數,這是很難理解的,禁用內容協助並可能導致像您這樣的錯誤(因此我加入了<String>

不過,我校正在運行時不會造成編譯錯誤,但ClassCastException錯誤

相關問題