仿抖音短視頻APP源碼RecyclerView獲得行佈局下標的兩種方式

一.創建事件處理接口

public interface OnClickRecycler {

    public void clickRecycler(int position);
    public void longClickRecycler(int position);
}

二.創建適配器

public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.MyViewHolder> {
    
    private List<Bean.T1348647853363Bean> beans;
    private Context context;
    private OnClickRecycler clickListener;

    public RecyclerViewAdapter(Context context, List<Bean.T1348647853363Bean> beans){
        this.beans = beans;
        this.context = context;
    }

    public void setListener(OnClickRecycler clickListener){
        this.clickListener = clickListener;
    }

    @NonNull
    @Override
    public MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View view = LayoutInflater.from(context).inflate(R.layout.itemlayout,viewGroup,false);

        MyViewHolder myViewHolder = new MyViewHolder(view);
        return myViewHolder;
    }

    @Override
    public void onBindViewHolder(@NonNull MyViewHolder myViewHolder, final int i) {
        Bean.T1348647853363Bean info = beans.get(i);
        Glide.with(context).load(info.getImgsrc()).into(myViewHolder.imageView);
        myViewHolder.textView.setText(info.getTitle());
        myViewHolder.itemView.setTag(i);

        //方式一:綁定時處理事件
        myViewHolder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                clickListener.clickRecycler(i);
            }
        });

        myViewHolder.itemView.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View v) {
                clickListener.longClickRecycler(i);
                return true;
            }
        });
    }

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

    public class MyViewHolder extends RecyclerView.ViewHolder{

        private TextView textView;
        private ImageView imageView;

        public MyViewHolder(@NonNull final View itemView) {
            super(itemView);
            textView = itemView.findViewById(R.id.txt_item);
            imageView = itemView.findViewById(R.id.img_item);

            //方式二:ViewHolder類中實現事件處理,使用getTag()獲得下標
            itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    //itemView.getTag()返回綁定的下標
                    clickListener.clickRecycler((Integer) itemView.getTag());
                }
            });

            itemView.setOnLongClickListener(new View.OnLongClickListener() {
                @Override
                public boolean onLongClick(View v) {
                    clickListener.longClickRecycler((Integer) itemView.getTag());
                    return true;
                }
            });
        }
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章