Страницы

Поиск по вопросам

вторник, 7 мая 2019 г.

Как удалить изображение из ImageView?

У меня есть 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 array; 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 + "
" + " 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)

Комментариев нет:

Отправить комментарий