#java #android
У меня есть 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 ArrayListarray; private EditText etInputLatter; 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 + "\n" + " Your time " + format.format(cal.getTime()) + "\n" + "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(); } }
Ответы
Ответ 1
Вам просто необходимо перед добавлением новой пикчи обnullять Ваш ImageView , типа imageView.setImageDrawable(null)
Комментариев нет:
Отправить комментарий