Android-RecyclerView 클릭 추가 이벤트

14987 단어 안드로이드 기술
RecyclerView에 비해ListView의 장점은ListView가 클릭한 것은 각각의 Item이지만 각각의 Item에 포함된 컨트롤러는 클릭할 수 없고 RecyclerView 각각의 Item의 컨트롤러는 클릭 이벤트를 실현할 수 있다는 것이다.FruitAdapter의 코드만 수정하면 됩니다.
package com.example.test;

import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import java.util.List;

public class FruitAdapter extends RecyclerView.Adapter<FruitAdapter.ViewHolder> {
    private List<Fruit>fruitList;
    static class ViewHolder extends RecyclerView.ViewHolder{
        View fruitview;//              
        ImageView fruitImage;
        TextView fruitName;
        public ViewHolder(View view){
            super(view);
            fruitview=view;
            fruitImage=view.findViewById(R.id.fruit_image);
            fruitName=view.findViewById(R.id.fruit_name);
        }
    }
    public FruitAdapter(List<Fruit> fruitLists){
        fruitList=fruitLists;
    }

    @NonNull
    @Override// onCreateViewHolder       
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View view= LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.fruit_item,viewGroup,false);
        final ViewHolder viewHolder=new ViewHolder(view);
        // TextView      
        viewHolder.fruitName.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int position=viewHolder.getAdapterPosition();//      
                Fruit fruit=fruitList.get(position);//       
                Toast.makeText(v.getContext(),fruit.getName()+"  ",Toast.LENGTH_SHORT).show();
            }
        });
        // ImageView      
        viewHolder.fruitImage.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int position=viewHolder.getAdapterPosition();//       
                Fruit fruit=fruitList.get(position);//    
                Toast.makeText(v.getContext(),fruit.getName()+" ",Toast.LENGTH_SHORT).show();
            }
        });
        return viewHolder;
    }

    @Override
    public void onBindViewHolder(@NonNull ViewHolder viewHolder, int i) {
        Fruit fruit=fruitList.get(i);
        viewHolder.fruitImage.setImageResource(fruit.getImageId());
        viewHolder.fruitName.setText(fruit.getName());
    }

    @Override
    public int getItemCount() {
        return fruitList.size();
    }
}


로그인 클릭 이벤트에서 우리는 먼저 사용자가 클릭한 위치(position)를 얻은 다음에position에 따라 해당하는 Fruit 실례를 얻는다.

좋은 웹페이지 즐겨찾기