Страницы

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

понедельник, 24 февраля 2020 г.

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

#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 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 + "\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)

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

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