《Android那些事》——ListView中Button點選事件解決方案
阿新 • • 發佈:2019-01-13
說一說寫這篇文章的原因,最近在做一個專案,有涉及到使用者回覆的功能
遇到的其中一個問題就是,如何為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);
}