2012-04-13 9 views
0

これはなぜ私にウェイトのエラーを与えているのですか?文字列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()); 
} 

出力

重量ユーザが

重みをinputedたものであり、結果を表示するためのTextViewで生成されたリストです。私の知る限り、ループし、各重みのためには以下のような重み及び表示に挿入しなければならない(入力が1である場合、22,3)

1

22

3

は任意の助けが理解されるべき上記本を知っている

答えて

1

ループのためにあなたを変更してみてください:。。

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

問題は、データベースの重みがタイプObjectであることです。しかし、あなたはObjectStringと扱うことはできません。

+0

ありがとうございます。しかし、何が問題でしたか? –

+1

@TuffyGは私の答えを参照してください: 'List'型の変数を使って反復しますが、' weights'の要素はリストではないので、エラーです。 –

+0

お世話になりました –

2

私はあなたが(拡張forループを使用して)重みを反復して、エラーを作ると思う:

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

は、そのように宣言、重みのすべての要素は、このように(リストでなければならないことを意味しiterating変数もリストです)。しかし、私はそうではないと思います。私は正確に私はそれが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が発生することはありません