2016-10-20 3 views
0

エラー を取得中にエラーを取得するクリックボタンは、私は次のアクティビティに配列リストに送信しているとき、私は私がアンドロイドプログラミングに新たなんだ、設定された状態の方法を使用して、データベースから更新を持って

ImageButton ibAddMore = (ImageButton) findViewById(R.id.ibAddMore); 
    ibAddMore.setOnClickListener(new View.OnClickListener() { 
            @Override 
            public void onClick(View v) { 
             DataBaseHelper db = new DataBaseHelper(getApplicationContext()); 
             for (People people : alertList) {//In this Line getting error 
              if (people.getStatus() == 1) { 
               db.setStatus(people.getId(), "0"); 
               alertList.add(people); 
              } else { 
               db.setStatus(people.getId(), "1"); 
              } 
             } 
             Intent intent = new Intent(AlertList.this, AlertListAll.class); 
             startActivity(intent); 
            } 
           } 

    ); 

設定状態方法

public int setStatus(String peopleId, String status) { 
    SQLiteDatabase sqLiteDatabase = this.getWritableDatabase(); 
    ContentValues values = new ContentValues(); 
    values.put(STATUS, status); 

    return sqLiteDatabase.update(TABLE_PEOPLE, values, ID + "=?", 
      new String[]{peopleId}); 

} 

例外:

java.util.ConcurrentModificationException 
at java.util.AbstractList$SimpleListIterator.next(AbstractList.java:62) 
at com.Jaydeep.alertme.activity.AlertList$1.onClick(AlertList.java:67) 
at android.view.View.performClick(View.java:4240) 
at android.view.View$PerformClick.run(View.java:17721) 
at android.os.Handler.handleCallback(Handler.java:730) 
at android.os.Handler.dispatchMessage(Handler.java:92) 
at android.os.Looper.loop(Looper.java:137) 
at android.app.ActivityThread.main(ActivityThread.java:5136) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:525) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
at dalvik.system.NativeStart.main(Native Method) 

答えて

1

あなたがループしている同じコレクションを直接変更することはできません。しかし、それはListIteratorを使って行うことができます。例えば。

for (ListIterator<People> iterator = alertList.listIterator(); iterator.hasNext();) {//In this Line getting error 
    People people = iterator.next(); 
    if (people.getStatus() == 1) { 
     db.setStatus(people.getId(), "0"); 
     iterator.add(people); 
    } else { 
     db.setStatus(people.getId(), "1"); 
    } 
} 
+0

私はこのようないくつかのエラーをあなたのコードを入れている:-java.util.AbstractList $ SimpleListIterator.next –

+0

それでも 'alertList.add(人を)持っています全体のスタックトレース – Blackbelt

+0

が –

0

反復処理中に同じリストに要素を追加しています。それはアンドロイドよりもJavaです。

Btwなぜあなたは反復しているリストに同じ要素を再度追加したいのですか?

関連する問題