首先,给出自定义OnClickListener代码:
/* * 自定义的OnClickListener,提供给外部容器(Activity/Fragment 回调使用) */ public interface showMessageItemOnClickListener extends OnClickListener{ /** * * @param viewID listview 中 item 内部组件的标记,可以使用R.id.xxx 作为标记,用于区分具体点击的组件 * @param position listview 中 item 的序号,用于区分点击组件所在的item */ public void onClick(int viewID ,int position); }
再来给出ListView Adapter代码:
public class ShowMessageAdapter extends BaseAdapter{ private Context context ; private List<ShowMessage> data ; private showMessageItemOnClickListener onClickListener ; public ShowMessageAdapter(Context context ,List<ShowMessage> data ,showMessageItemOnClickListener onClickListener) { super(); this.data = data ; this.context = context ; this.onClickListener = onClickListener ;//由外部容器传入(Activity/Fragment) } @Override public int getCount() { return data==null?0:data.size() ; } @Override public Object getItem(int arg0) { return null; } @Override public long getItemId(int arg0) { return 0; } @Override public View getView(final int position, View arg1, ViewGroup viewGroup) { OnClickListener onClickListener = new OnClickListener() { @Override public void onClick(View view) { switch (view.getId()) { case R.id.message_layout_iv_comment: ShowMessageAdapter.this.onClickListener.onClick(view.getId(), position) ; break; default: break; } } }; View rootView = LayoutInflater.from(context).inflate(R.layout.message_layout, null) ; ImageView imageView = (ImageView) rootView.findViewById(R.id.message_layout_iv_comment); imageView.setOnClickListener(onClickListener) ; return rootView; } }
通过getView(),内部实现的OnClickListener,调用外部容器出入的接口,传入itemPosition和ViewID参数,实现定位点击事件监听.
再来给出外部容器代码:
public class HomeFragment extends Fragment implements showMessageItemOnClickListener{ //省略中间代码 @Override public void onClick(int viewID, int position) { // TODO Auto-generated method stub switch (viewID) { case R.id.message_layout_iv_comment: Toast.makeText(getActivity(), "position"+position, Toast.LENGTH_SHORT).show() ; break; default: break; } } }
相关推荐
ListView Item多布局的实现
本文实例讲述了Android编程...一开始想着是不是能在list item的布局给上层布局添加一个: android:clickable=false android:focusable=false 就是禁止点击,但试了试没有效果,后来师傅提醒我,我的这个listview使
Android ListView每个Item上面的有TextView和Button,为ListView每个Item上面的按钮添加事件,并获取TextView文本信息。
写的demo只有第一条item布局不一样,剩下的item布局都一样;主要用于实现在listview加上headview时又有下拉...所有就把原本listview要加的headview布局加到listview的item布局中;这样在加下拉刷新控件就不会起冲突了;
ListView加载多item布局及性能加载优化
动态添加、移除ListView的itemView!非常流畅哦
android 布局中网格视图 ListView的简单运用 采用的是最简单的ArrayAdapter适配器
1、ListView item中加入checkbox后onListItemClick 事件无法触发。 原因:checkbox的优先级高于ListItem于是屏蔽了ListItem的单击事件。 解决方案:设置checkbox的android:focusable="false" 2、选择其中的...
在listview中添加按钮,并监听相应事件,可以加上自己的方法。
ListView中含有多个item布局的处理,在类似微信里chat界面的时候,会遇到一个listView中有多个布局存在的状况(普通聊天布局、纯图片布局、图文混排布局等等,提供一些解决方案。
主要介绍了WPF的ListView控件自定义布局的方法,结合实例形式分析了WPF中ListView控件的布局方法,需要的朋友可以参考下
Android中会有一个Listview对应多个Item的,例如:微信收藏、消息界面,都是ListView对应多个Item。这是一个demo,实现了一对多的适配。
ListView加载多个布局
listView item不同布局demo
listview多种item
手动添加,点击按钮添加listview
模拟聊天界面的ListView中的两种布局的实现
在ListView中,动态添加一段文字,不刷新界面
ListView项(Item)的三种布局使用例子
android 的listview 内部item的布局包含checkbox控件简单好用!