2017-10-10 14 views
-1

次のコードに問題があります。AndroidのJavaリストから項目を削除する

アイテムのインデックスを取得して使用しています。今度は同じ位置に戻らないようにリストからその位置を削除したいのですが、アプリケーションのクラッシュの下にあるメソッドを呼び出すと、その行を削除するとmyList.remove(randomIndex);が正常に実行されます。 この行に何か問題がありますか?

public void showtime() { 

    Random rand = new Random(); 
    randomIndex = rand.nextInt(myList.size()); 

    randomName = myList.get(randomIndex); 
    txtView.setText(randomName); 

    if (randomIndex==1)) { 
     imgLabel.setImageResource(R.drawable.Label1); 
    } 
    if (randomIndex==2)) { 
     imgLabel.setImageResource(R.drawable.Label2); 
    } 
    if (randomIndex==3)) { 
     imgLabel.setImageResource(R.drawable.Label3); 
    } 

    myList.remove(randomIndex); 
    } 
+10

エラーログを貼り付けます... –

+0

これ以上の情報なしではわかりにくいですが、リストのサイズがコードのどこかにキャッシュされていると思われ、アプリケーションが最後の要素にアクセスしようとしますその位置(IndexOutOfBoundsExceptionとも呼ばれます)。 – Thomas

+2

あなたのコードはそれほどコンパイルされません:(randomIndex == 3)) –

答えて

0

....

+0

彼は 'ArrayList'を使用していないと思いましたか? –

+0

彼はそれに言及していない、私は同じ問題に直面したので、私はこれを言いました... –

+1

これはコメントとして投稿されている可能性があります問題は何かに直接的な答えではなく、むしろ不正確な仮定。 –

0

のことを確認してください。

の1-ます。myListがArrayListのです。このメソッドが呼び出されると

2-、はmyListはあなたのif文のそれぞれに構文エラーがあり、ほとんどの要素

を持っています。彼らは、余分な)あなたはそれが はこれを試してみてくださいのArrayListにする必要があり、それは一覧すべきではないので、確認して、リストから項目を削除する

if (randomIndex==1) { 
    imgLabel.setImageResource(R.drawable.Label1); 
} 
if (randomIndex==2) { 
    imgLabel.setImageResource(R.drawable.Label2); 
} 
if (randomIndex==3) { 
    imgLabel.setImageResource(R.drawable.Label3); 
} 
-1

それを持っています

randomIndex = rand.nextInt(myList.size()); 
+0

[Java Random API](https://docs.oracle.com/javase/8/docs/api/java/util/Random.html#nextInt-int - ): 'この乱数ジェネレータのシーケンスから引き出された、0(包括)と指定された値(排他的)の間で均等に分散された擬似乱数int値を返します。 – Charliemops

-1

する必要がありますあなたは、生成されたインデックスがリストの範囲内であることを確認し、この

のようなクラッシュを回避することができます
randomIndex = rand.nextInt(myList.size()-1); 

if(randomIndex <= myList.size()-1){ 
myList.remove(randomIndex) 
}; 
+0

[Java Random API](https://docs.oracle.com/javase/8/docs/api/java/util/Random.html#nextInt-int-): '一様分布の擬似乱数を返します。 0(両端を含む)と指定された値(排他的)を返します。この '-1'は間違っています!! – Charliemops

関連する問題