说一说写这篇文章的原因,最近在做一个项目,有涉及到用户回复的功能
遇到的其中一个问题就是,如何为ListView中的Button设置点击事件?
在此将解决方案分享给大家
第一步:如何在ListView中放入一个Button?
答:1.在layout中写一个自定义控件,其内包含button(我的xml文件叫做custom_layout.xml)
2.再新建一个装有ListView的xml文件()
第二步:新建一个adapter继承BaseAdapter,重写getView方法,引入刚刚所写的自定义控件(我在项目中用到的是ImageButton,跟Button是一样的)
@Override
public View getView(int i, View convertView, ViewGroup viewGroup) {
final ViewHolder holder;
// 重用convertView
if (convertView == null) {
holder = new ViewHolder();
convertView = LayoutInflater.from(context).inflate(R.layout.custom_layout, null);
//初始化ImageButton
holder.btn_cmt_like = (ImageButton) convertView.findViewById(R.id.cmt_like_icon);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.btn_cmt_like.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (holder.CMT_LIKE_FLAG) {
} else {
holder.cmt_like_count.setText(............);
}
}
});
//注:这样能使所有listview的item都共用同一个listener,
// 而不用为每个item都设置各自的listener!!!
holder.btn_cmt_like.setTag(i);
return convertView;
}
/**
* 静态类,便于GC回收
*/
public static class ViewHolder {
ImageButton btn_cmt_like;
}
第三步:新建一个activity文件,暂时就叫main_activity,在activity中引入listview_layout.xml
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_user_pub_msg_detail);
}