Recyclerview的Adapter的使用以及item以及item内部的点击事件

这个是Activity的调用


import kotlinx.android.synthetic.main.activity_search_detail.*

class SearchDetailActivity : BaseActivity(), SearchDetailAdapter.OnItemClick {


    val mdata: ArrayList<String> = ArrayList<String>()
    var adapter: SearchDetailAdapter? = null
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_search_detail)
        setStatusBarColor()
        initRecyclerView()
        initData()
    }

    private fun initRecyclerView() {
        adapter = SearchDetailAdapter(this@SearchDetailActivity, mdata)
        mRecyclerView.layoutManager = LinearLayoutManager(this@SearchDetailActivity)
        mRecyclerView.addItemDecoration(DividerItemDecoration(this@SearchDetailActivity, DividerItemDecoration.VERTICAL))
        mRecyclerView.adapter = adapter
        adapter!!.setOnItemClick(this)

    }

    override fun setOnItemClick(view: View?, position: Int) {
    Utils.log("TAG", "item")
        when (view!!.id) {
            R.id.tv_record -> Utils.log("TAGG", "tv_record")
            R.id.tv_delete -> Utils.log("TAG", "tv_delete")
            else -> Utils.log("TAG", "item")
        }
    }
    private fun initData() {
        mdata.clear()
        for (i in 1..10) {
            mdata.add("数据" + i)
        }
        adapter?.notifyDataSetChanged()
    }
}

这个是adapter的内容





public class SearchDetailAdapter extends RecyclerView.Adapter<SearchDetailAdapter.Holder> implements View.OnClickListener {

    private List<String> mdata ;
    private Context mContext;

    public SearchDetailAdapter( Context mContext,List<String> mdata) {
        this.mdata = mdata;
        this.mContext = mContext;
    }

    @NonNull
    @Override
    public Holder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View view = View.inflate(viewGroup.getContext(),R.layout.search_item,null);
        view.setOnClickListener(this);
        Holder holder = new Holder(view);
        return holder;
    }

    @Override
    public void onBindViewHolder(@NonNull Holder holder, int i) {
        holder.textView.setText(mdata.get(i));
        holder.textView.setTag(i);
        holder.tv_delete.setTag(i);
        holder.itemView.setTag(i);
    }

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


    public class Holder extends RecyclerView.ViewHolder{
        private TextView textView;
        private ImageView tv_delete;
        public Holder(@NonNull View itemView) {
            super(itemView);
            textView = itemView.findViewById(R.id.tv_record);
            textView.setOnClickListener(SearchDetailAdapter.this::onClick);
            tv_delete = itemView.findViewById(R.id.tv_delete);
            tv_delete.setOnClickListener(SearchDetailAdapter.this::onClick);
        }
    }

    public interface OnItemClick{
        void setOnItemClick(View view,int position);
    }
    private OnItemClick onItemClick;

    public void setOnItemClick(OnItemClick onItemClick) {
        this.onItemClick = onItemClick;
    }

    public OnItemClick getOnItemClick() {
        return onItemClick;
    }

    @Override
    public void onClick(View view) {
        if (onItemClick!=null){
            int position = (int) view.getTag();
            Log.e("TAg","position"+position);
            switch (view.getId()){
                case R.id.tvRecord:
                    onItemClick.setOnItemClick(view,position);
                    Log.e("TAg","tvRecord走了吗");
                    break;
                case R.id.tv_delete:
                    onItemClick.setOnItemClick(view,position);
                    break;
                    default:
                        onItemClick.setOnItemClick(view,position);
                        Log.e("TAg","onItemClick走了吗");
                        break;
            }
//            onItemClick.setOnItemClick(view, (Integer) view.getTag());
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值