0

私のアクティビティでは、平均的なユーザーが評価を送信して、評価バーに表示したいと考えています。

ユーザー評価が呼び出され、ArrayList に値を設定します。

コードのこの部分は機能します。たとえば、 I cansetRating(array_list.get(index))と正しい評価が表示されます。

スレッドでデータを抽出し、次のハンドラーで評価を設定しようとします。

    h.postDelayed(new Runnable() { 
    public void run () {                

        if (t.getState() == Thread.State.TERMINATED) {

            int sum = 0;
            for(int i = 0; i == products.size(); i++)
            {
                sum = sum + products.get(i); //line 256
            }               
            int x = Math.round(sum / products.size());

            ratingbar1.setRating(x);

            return;
        } else {
            h.postDelayed(this, 1000);  
        }
    }
    }
, 1000);

アプリを開くとクラッシュし、logCat に次のエラーが表示されます。

10-27 00:06:31.209: E/AndroidRuntime(859): FATAL EXCEPTION: main
10-27 00:06:31.209: E/AndroidRuntime(859): java.lang.IndexOutOfBoundsException: Invalid index 15, size is 15
10-27 00:06:31.209: E/AndroidRuntime(859):  at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:257)
10-27 00:06:31.209: E/AndroidRuntime(859):  at java.util.ArrayList.get(ArrayList.java:311)
10-27 00:06:31.209: E/AndroidRuntime(859):  at com.example.hikebuddy.Lion$6.run(Lion.java:256)

私はこれで遊んでみましたが、もう考えられないようです。

どんな助けでも大歓迎です。

4

1 に答える 1

0

これを交換

        for(int i = 0; i == products.size(); i++)
        {
            sum = sum + products.get(i); //line 256
        }  

これとともに

        for(int i = 0; i < products.size(); i++)
        {
            sum = sum + products.get(i); //line 256
        }

products.size() は 15 ですが、配列は 0 から始まるため、最後のインデックスは 14 です

于 2013-10-26T22:39:14.677 に答える