ListView Item 里多种点击事件的用法
2017-05-25 14:24
337 查看
思路:由于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); } } } }
相关文章推荐
- Android基础:listview的item点击事件会使里面的Button也出现按压的效果
- 关于Android中popupwindow的listview的item点击事件无效的解决方案
- android 往dialog中加入listview,并实现listview中item的点击事件
- 给Listview里面Item里的每一个控件怎么设定点击事件
- Android ListView item 点击事件失效问题的解决
- android捕获ListView中每个item点击事件
- 简单的实现listView中item多个控件以及点击事件
- ListView item点击事件失效问题
- 程序猿媛六:ListView的Item点击事件(消息传递)
- listview 的onitemlongclick阿和onitemclick冲突,item中还有button的点击事件
- 关于ListView中控件点击事件与Item点击事件冲突的问题
- Android ListView下拉加载更多,http请求加载数据,Item点击事件
- listview 的onitemlongclick阿和onitemclick冲突,item中还有button的点击事件
- android ListView Item 点击事件
- android捕获ListView中每个item点击事件
- android自定义dialog中点击listview的item事件关闭dialog
- listview 嵌套checkbox响应item点击和button点击事件
- Android-ListView中嵌套(ListView)控件时item的点击事件不起作用的问题
- Android ListView item 点击事件失效问题的解决
- listViewitem和上面的多个button都有点击事件