У меня есть ImageView в который я устанавливаю по очереди изображения из массива. Суть в том, что когда все изображения по очереди были установлены, программа бежит дальше оставляя последнее установленное изображение в ImageView а я хочу что ImageView после операций с ним принимал свое первоначальное значение, чтоб там ничего не оставалось. я пробовал setImageResource(0) и пробовал делать его невидимым и прочее, но это все не то, мне нужно просто вызвать функцию remove(), которая очистит ImageView. Но нет такой функции. Как почистить ImageView?
public class CheckABC extends AppCompatActivity implements View.OnKeyListener {
private int finish;
private int mistake;
private int number;
private boolean stopWhile;
private Button bStart;
private Button bCheck;
private Context context;
private Chronometer chronometer;
private ImageView ivOutput;
private ArrayList
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_check_yourself);
array = Letters.getInstance().getLetterses();
context = this;
etInputLatter = (EditText) findViewById(R.id.etAddLetter);
etInputLatter.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN &&
(keyCode == KeyEvent.KEYCODE_ENTER)) {
checkYourself();
return true;
}
return false;
}
});
}
public void startCheck(View v) {
etInputLatter.setVisibility(View.VISIBLE);
bCheck = (Button) findViewById(R.id.check);
(bCheck).setEnabled(true);
bStart = (Button) findViewById(R.id.bStart);
bStart.setEnabled(false);
startCheck();
}
private void startChronometer() {
chronometer = (Chronometer) findViewById(R.id.chronometer);
chronometer.setBase(SystemClock.elapsedRealtime());
chronometer.start();
}
private void startCheck() {
startChronometer();
new StartCheck().start();
}
private int[] mesInitializing(int arraySize) {
int[] mes = new int[arraySize];
for (int i = 0; i < mes.length; i++) {
mes[i] = -1;
}
return mes;
}
private class StartCheck extends Thread {
@Override
public void run() {
super.run();
long startTime = System.currentTimeMillis();
int[] mes = mesInitializing(array.size());
boolean check = true;
finish = 0;
int i = 0;
while (finish < array.size()) {
number = (int) (Math.random() * array.size());
for (int obj : mes) {
check = number != obj;
if (!check) break;
}
if (check) {
runOnUiThread(new Runnable() {
@Override
public void run() {
System.out.println(number);
ivOutput = (ImageView) findViewById(R.id.ivLetter);
ivOutput.setImageResource(
array.get(number).getIdIRForPropis());
}
});
mes[i] = number;
i += 1;
while (!stopWhile) {
try {
sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
stopWhile = false;
}
}
if (finish == array.size()) {
chronometer.stop();
final long totalTime = System.currentTimeMillis() - startTime;
final Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(totalTime);
final SimpleDateFormat format = new SimpleDateFormat("mm:ss");
runOnUiThread(new Runnable() {
@Override
public void run() {
ivOutput.setImageDrawable(null);
chronometer.setBase(SystemClock.elapsedRealtime());
------>>>> ВОТ ЭТА СТРОЧКА etInputLatter.setText(" END");
AlertDialog.Builder builder = new AlertDialog.Builder(CheckABC.this);
builder.setTitle("Results!")
.setMessage("Your mistake " + mistake + "
" + " Your time " +
format.format(cal.getTime()) + "
" + "Do you want try again?")
.setIcon(R.drawable.goodresult)
.setCancelable(false)
.setNegativeButton("I want try again!",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
startCheck();
}
})
.setPositiveButton("Cancel ",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
finish();
}
});
AlertDialog alert = builder.create();
alert.show();
bStart.setEnabled(true);
bCheck.setEnabled(false);
}
});
}
}
}
public void checkYourself(View v) {
checkYourself();
}
private void checkYourself(){
String inputLatter = etInputLatter.getText().toString();
String vvodSKlavi = array.get(number).getVvodSKlavi();
if (inputLatter.isEmpty())
Toast.makeText(context, "enter you answer", Toast.LENGTH_SHORT).show();
else {
if (vvodSKlavi.equals(inputLatter)) {
Toast.makeText(context, "you are right", Toast.LENGTH_SHORT).show();
etInputLatter.setText("");
finish += 1;
this.stopWhile = true;
}
if (!inputLatter.equals(vvodSKlavi)) {
mistake += 1;
Toast.makeText(context, "try one more", Toast.LENGTH_SHORT).show();
etInputLatter.setText("");
}
}
}
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
return false;
}
public void backToABC(View v) {
finish();
}
}
Ответ
Вам просто необходимо перед добавлением новой пикчи обnullять Ваш ImageView , типа imageView.setImageDrawable(null)
Комментариев нет:
Отправить комментарий