Android 인터페이스를 사용하여 RecyclerView item에 스니퍼 이벤트 추가

3034 단어
이전에 item의 감청 이벤트를 추가한 것은 어댑터에 있는 onCreate 방법에서 직접holder입니다.view.setOnClickListener(new OnClickListener){}; 이 방법은 곽림의 두 번째 행 코드를 배운 것이다.
뒤에 hongyang의 블로그에서 배운 다음과 같은 방법:
    public interface OnItemClickListener {
        void onItemClick(View v,int position);
    }

    public interface OnItemLongClickListener {
        void onItemLongClick(View v,int position);
    }

    private OnItemClickListener onItemClickListener;
    private OnItemLongClickListener onItemLongClickListener;

첫 번째 단계: 두 개의public 인터페이스를 쓰고 인터페이스에 방법을 넣습니다. 방법의 매개 변수는 주의하십시오. 하나는 View이고 하나는 int입니다. int는position을 기록하는 데 사용됩니다.두 번째 단계: 두 개의 private 인터페이스를 인용합니다.
    public void setOnItemClickListener(OnItemClickListener listener){
        onItemClickListener= listener;
    }
    public void setOnItemLongClickListener(OnItemLongClickListener listener){
        onItemLongClickListener=listener;
    }

세 번째 단계: 두 개의public방법을 추가하여 호출자가 호출하고 파라미터를 인터페이스에 넣는다. 이런 효과는 호출자가 이 방법을 호출하면 우리는 호출자에게 우리의 파라미터 안에 넣은 인터페이스를 실현하도록 강요한다.
    @Override
    public void onBindViewHolder(final MyViewHolder holder, int position) {
        if (getItemViewType(position) == NORMAL_VIEW) {
            holder.textView.setText(list.get(position));
            if (onItemClickListener!=null){
                holder.textView.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        onItemClickListener.onItemClick(holder.itemView,holder.getLayoutPosition());
                    }
                });
            }
            if (onItemLongClickListener!=null){
                holder.textView.setOnLongClickListener(new View.OnLongClickListener() {
                    @Override
                    public boolean onLongClick(View view) {
                        onItemLongClickListener.onItemLongClick(holder.itemView,holder.getLayoutPosition());
                        return false;
                    }
                });
            }
        }
    }

4단계:onbind방법에서 우리의인터페이스가null인지 아닌지를 판단하기 위해if를 먼저 한다.null인지 건너뛰고null이 아니라는 것은 실현되었다는 것을 설명한다. 들어가서 감청방법을 설정하고 구체적인 코드를 설정한다.
이제 Activity로 돌아가서 감청 설정할 수 있어요!
adapter.setOnItemClickListener(new MyAdapter.OnItemClickListener() {
            @Override
            public void onItemClick(View v, int position) {
                Toast.makeText(MainActivity.this,"the number"+position+"has been clicked",Toast.LENGTH_SHORT).show();
            }
        });
        adapter.setOnItemLongClickListener(new MyAdapter.OnItemLongClickListener() {
            @Override
            public void onItemLongClick(View v, int position) {
                list.remove(position);
                adapter.notifyItemRemoved(position);
                 Toast.makeText(MainActivity.this,"the number"+position+"has been removed",Toast.LENGTH_SHORT).show();
            }
        });

~

좋은 웹페이지 즐겨찾기