在 Activity、Fragment 中设置 RecyclerView 中 item 的点击事件

BorrowBookFragment.java

package com.example.myapplication.ui.login.ui.home;
//import...
public class BorrowBookFragment extends Fragment {

    public RecyclerView rv_bookList;
    private List<Book> bookList = new ArrayList<>();
    private BorrowBookAdapter mAdapter;
  
    public interface MyOnItemClickListener {

        void OnItemClickListener(View itemView);
    }

    public View onCreateView(@NonNull LayoutInflater inflater,
                             ViewGroup container, Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_borrow_book, container, false);

        rv_bookList = rootView.findViewById(R.id.rv_booklist);
        et_bookName = rootView.findViewById(R.id.et_bookName);
        initView();

        return rootView;
    }

    @Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
    }

    /*
     * 初始化数据
     * */
    public void initData(String bookName){

        new Thread(){
            @Override
            public void run() {
                //此处初始化数据
            }
        }.start();
    }

    /*
     * 初始化视图
     * */
    public void initView(){
        //默认分割线
        rv_bookList.addItemDecoration(new DividerItemDecoration(getContext(),DividerItemDecoration.VERTICAL));
       
        mAdapter = new BorrowBookAdapter(bookList);
        rv_bookList.setLayoutManager(new LinearLayoutManager(getActivity()));
        mAdapter.setMyOnItemClickListener(new MyOnItemClickListener() {
            @Override
            public void OnItemClickListener(View v) {
            	//注意:此处通过 RecyclerView 的实例获取item的位置
                int position = rv_bookList.getChildAdapterPosition(v);
                Book book = bookList.get(position);
                /*此处填写触发点击事件的代码*/
                
            }
        });
        rv_bookList.setAdapter(mAdapter);
    }

    
}

BorrowBookAdapter.java

package com.example.myapplication.ui.login.ui.home;
//import...

public class BorrowBookAdapter extends RecyclerView.Adapter<BorrowBookAdapter.BookListViewHolder>{

    private List<Book> bookList;
    private BorrowBookFragment.MyOnItemClickListener myOnItemClickListener;

    public void setMyOnItemClickListener(BorrowBookFragment.MyOnItemClickListener myOnItemClickListener) {
        this.myOnItemClickListener =  myOnItemClickListener;
    }

    public BorrowBookAdapter(List<Book> bookList){
        this.bookList = bookList;
    }

    @NonNull
    @Override
    public BorrowBookAdapter.BookListViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

        View view = LayoutInflater.from (parent.getContext()).inflate (R.layout.borrowbooklist_item_layout,parent,false);
        BookListViewHolder holder = new BookListViewHolder (view);
        holder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                myOnItemClickListener.OnItemClickListener(v);
            }
        });
        return holder;
    }

    @Override
    public void onBindViewHolder(@NonNull BorrowBookAdapter.BookListViewHolder holder, int position) {

        Book book = bookList.get(position);
        holder.tv_bookName.setText(book.getName());
        holder.tv_bookISBN.setText("ISBN: "+book.getIsbn());
        holder.tv_remainBookNum.setText("剩余"+book.getRemainNumber()+"本, ");
        holder.tv_totalBookNum.setText("总共"+book.getTotalNumber()+"本");
    }

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

    class BookListViewHolder extends RecyclerView.ViewHolder{

        private TextView tv_bookName;
        private TextView tv_bookISBN;
        private TextView tv_remainBookNum;
        private TextView tv_totalBookNum;

        public BookListViewHolder(@NonNull View itemView) {

            super(itemView);
            tv_bookName = itemView.findViewById(R.id.tv_bookName);
            tv_bookISBN = itemView.findViewById(R.id.tv_bookISBN);
            tv_remainBookNum = itemView.findViewById(R.id.tv_remainBookNum);
            tv_totalBookNum = itemView.findViewById(R.id.tv_totalBookNum);
        }
    }
}

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值