public class YourActivity extends AppCompatActivty {
// 멤버 변수들
private final List<Integer> imageIndices = Arrays.asList(0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
private final RandomIndexProvider indexProvider = new RandomIndexProvider(imageIndices);
public void onCreate(Bundle saveInstance) {
super.onCreate(budle);
// 다른 코드들 ....
btn_ko1[0].setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
btn_ko1[0] = (ImageView)findViewById(R.id.btn_ko1);
// TODO : 리턴값이 -1일 때의 처리 필요.
int num = indexProvider.next();
btn_ko1[0].setImageResource(img[num]);
}
});
}
}
}
public class RandomIndexProvider {
private final Random ram = new Random();
private final List<Integer> remainedIndices;
public RandomIndexProvider(List<Integer> indices) {
remainedIndices = new ArrayList<>(indices);
}
public int next() {
if (remainedIndices.size() < 1) return -1;
int position = ram.nextInt(remainedIndices.size());
int result = remainedIndices.get(position);
remainedIndices.remove(position);
return result;
}
public boolean hasNext() {
return remainedIndices.size() > 0;
}
}
public class RandomIndexProviderTest {
private final List<Integer> testIndices = Arrays.asList(0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
private final RandomIndexProvider indexProvider = new RandomIndexProvider(testIndices);
@Test
public void testNext() {
while (indexProvider.hasNext()) {
int position = indexProvider.next();
System.out.println("### result : " + position);
}
}
}