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);
    }
    }
    }
    }






  • 相关阅读:
    项目管理改进实践
    Abount StoneAge Dictionary Project
    词库引擎核心设计
    JDOM / XPATH编程指南
    2007年图灵奖揭晓
    pjscrape: A webscraping framework written in Javascript, using PhantomJS and jQuery
    centos install node.js
    Posts tagged pyqt4
    install python262 写得不错
    WebSPHINX: A Personal, Customizable Web Crawler
  • 原文地址:https://www.cnblogs.com/lucktian/p/6903571.html
Copyright © 2011-2022 走看看