1. 程式人生 > >《Android那些事》——ListView中Button點選事件解決方案

《Android那些事》——ListView中Button點選事件解決方案

    說一說寫這篇文章的原因,最近在做一個專案,有涉及到使用者回覆的功能

    遇到的其中一個問題就是,如何為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);

    }