Заново установите последний нажатый элемент в окне просмотра - PullRequest
0 голосов
/ 15 апреля 2020

Я успешно справился с анимацией флип-карт для клика по предмету на основе этого урока Но то, что я хотел бы, это когда я нажимаю на новый элемент, последний нажатый элемент остается в его исходном состоянии (с анимацией или без нее). Работает для второго клика (первый нажатый элемент остается нормальным), но не для остальных. Итак, в чем проблема и как ее решить.

Вот код держателя:

private View clickedViewFront, clickedViewBack;
private int clickedPosition;

public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {

    public TextView title;
    public ImageView icon;
    FrameLayout card_back, card_front;
    private Context context;
    private AnimatorSet setRightOut;
    private AnimatorSet setLeftIn;
    private Button buttonSynthesis, buttonReaction, buttonProtection;
    boolean isFront = true;


    ViewHolder(View v, RecyclerViewClickListener listener, Context context) {
        super(v);
        title = v.findViewById(R.id.title);
        icon = v.findViewById(R.id.icon);
        card_front = v.findViewById(R.id.card_front);
        card_back = v.findViewById(R.id.card_back);

        card_front.setOnClickListener(this);

        this.context = context;
        loadAnimations();
        changeCameraDistance();
    }

    private void changeCameraDistance() {
        int distance = 2000;
        float scale = context.getResources().getDisplayMetrics().density * distance;
        card_front.setCameraDistance(scale);
        card_back.setCameraDistance(scale);
    }

    private void loadAnimations() {
        setRightOut = (AnimatorSet) AnimatorInflater.loadAnimator(context, R.animator.out_animation);
        setLeftIn = (AnimatorSet) AnimatorInflater.loadAnimator(context, R.animator.in_animation);
    }

    @Override
    public void onClick(View view) {
        switch (view.getId()) {
            ...;
            default:

                if (clickedViewFront != null) {
                    notifyItemChanged(clickedPosition);
                }

                clickedViewFront = card_front;
                clickedViewBack = card_back;
                clickedPosition = getAdapterPosition();
                if (isFront) {
                    setRightOut.setTarget(card_front);
                    setLeftIn.setTarget(card_back);
                    setRightOut.start();
                    setLeftIn.start();
                    isFront = false;
                    card_front.setEnabled(false);
                    card_front.setClickable(false);
                }
                break;
        }
    }
} 

На предыдущем элементе отображается вид "fla sh", но не отображается REINIT.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...