Обработка повторного просмотра просмотров кликов в адаптере и активности одновременно - PullRequest
0 голосов
/ 18 октября 2019

Я устанавливаю cardView цвет фона элемента для выбранного элемента на моем адаптере. Моя логика работает отлично. Тем не менее, я также хочу прослушивать клики в одном из моих действий, чтобы я мог выполнить операцию при нажатии на элемент. Поэтому я реализовал интерфейс для прослушивания событий щелчка.

Однако, похоже, что мой метод адаптера переопределяет мою активность, поскольку я получаю itemClickedListener только от adapter. Как мне обеспечить, чтобы они проходили одновременно, чтобы я мог выполнить свою. операции над моей деятельностью в качестве выбранных элементов?

Интерфейс

public interface ItemClickListener {

    void onItemClick(View view,  int position);
}

Класс адаптера

 @Override
    public void onBindViewHolder(@NonNull RecyclerViewAdapter.ViewHolder holder, int position) {
         //change background color when item clicked
        if(row_index ==position){
            holder.mParentView.setCardBackgroundColor(Color.parseColor("#99989B"));
        } else {
            holder.mParentView.setCardBackgroundColor(Color.parseColor("#424242"));
        }

Держатель для просмотра Класс

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

            private CardView mParentView;
            private TextView mTitle, mTime;
            private View mView;
            public ViewHolder(View itemView) {
                super(itemView);
                mView = itemView;
                mParentView = mView.findViewById(R.id.parentView);
                itemView.setOnClickListener(this);
            }

            public void setTitle(String text){
                mTitle = mView.findViewById(R.id.title);
                mTitle.setText(text);
            }
            public void setTime(String text){
                mTime = mView.findViewById(R.id.time);
                mTime.setText(text);
            }

            @Override
            public void onClick(View v) {
                if (itemClickListener != null) {
                    itemClickListener.onItemClick(v,  getAdapterPosition());
                }
            }
        }

    //interface implementation to listen for clicks in Activity.
        private ItemClickListener itemClickListener;

        public void setOnItemClickListener(ItemClickListener mItemClickListener) {
            this.itemClickListener = mItemClickListener;
        }
    }

Активность

do something when recycler view is clicked.
recyclerViewAdapter.setOnItemClickListener((view, position) -> {
            onBackPressed();
        //not working 
        })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...