zoukankan      html  css  js  c++  java
  • ListView Item 里多种点击事件的用法

    思路:由于item里需要处理多种点击事件,所以不便于用listview的onItemClickListener,  需要在adapter里进行设置不同点击区域的onclicklistener

    但是,有时候有些业务逻辑并不是在adapter里处理,所以需要在activity或者 fragment里提供给adapter一个接口,然后在adapter的点击事件里设置这个onclicklistener。

    eg:

    public interface ItemClickListener {
    void onLeftClick(int position);
    void onRightClick(int position);
    void onItemClick(int position);
    }

    在activity 里创建一个ItemClickListener
    ItemClickListener onItemClickListener = new ItemClickListener() {
    @Override
    public void onLeftClick(int position) {
    }

    @Override
    public void onRightClick(int position) {
    }

    @Override
    public void onItemClick(int position) {
    }
    };

    在activity 里创建一个自定义的XXXAdapter,通过构造传入onItemClickListener,和数据源list,这样就可以在activity里处理item里的各种点击事件了。
    mHistoryAdapter = new XXXAdapter(getApplicationContext(),list, onItemClickListener);

    XXXAdapter 里的关键设置

    holder.btn_cancel.setOnClickListener(new ItemListener(holder));
    holder.btn_pay.setOnClickListener(new ItemListener(holder));
    getView方法的返回对象view,设置view.setOnClickListener(new ItemListener(holder))处理整个item的点击事件
    class ItemListener implements View.OnClickListener{

    public ItemListener(ViewHolder holder) {
    this.holder = holder;
    }
    ViewHolder holder;
    @Override
    public void onClick(View v) {
    if(v.getId() == R.id.rl_arrow){
    if(holder.isshowMore){
    holder.isshowMore = false;
    }else{
    holder.isshowMore = true;
    }
    notifyDataSetChanged();
    }else if(v.getId()==R.id.btn_cancel){
    if(itemClickListener!=null){
    itemClickListener.onLeftClick(holder.pos);
    }
    }else if(v.getId()==R.id.btn_pay){
    if(itemClickListener!=null){
    itemClickListener.onRightClick(holder.pos);
    }
    }else{
    if(itemClickListener!=null){
    itemClickListener.onItemClick(holder.pos);
    }
    }
    }
    }






  • 相关阅读:
    SGU 106 The equation 扩展欧几里德
    poj 2478 Farey Sequence 欧拉函数前缀和
    uva 11752 The Super Powers 素数+大数判断大小
    Lightoj 1370 素数打表 +二分
    vijos 1250 最勇敢的机器人 分组背包+并查集
    Codeforces Round #366 (Div. 2) A , B , C 模拟 , 思路 ,queue
    BZOJ 4034: [HAOI2015]T2 树链剖分
    BZOJ 1057: [ZJOI2007]棋盘制作 悬线法求最大子矩阵+dp
    BZOJ 1260: [CQOI2007]涂色paint 区间DP
    BZOJ 1264: [AHOI2006]基因匹配Match 树状数组+DP
  • 原文地址:https://www.cnblogs.com/lucktian/p/6903571.html
Copyright © 2011-2022 走看看