繁体   English   中英

如何在Android的ListView中为按钮设置OnClickListener?

[英]How to set the OnClickListener for button in ListView in Android?

我想将button设置为ListView ,并且该button显示在ListView 我尝试将以下buttonClickListener设置为以下代码。

@Override
        public View getView(int position, View view, ViewGroup parent) {
            // TODO Auto-generated method stub

            ViewHolder viewHolder;
            Log.d(TAG, "getView");
            if(view == null){
                view = mInflator.inflate(R.layout.streamid_data, null);
                viewHolder = new ViewHolder();

                viewHolder.id_text = (TextView) view.findViewById(R.id.ID_text);
                viewHolder.get = (Button) view.findViewById(R.id.get);

                //The code is error , it only can set viewHolder.get.setOnClickListener(new ItemButton());
                viewHolder.get.setOnClickListener(new ItemButton(position));

            }else {
                viewHolder = (ViewHolder) view.getTag();
            }

            return view;
        }

    }

    static class ViewHolder {
        TextView id_text;
        Button get;
    }

    class ItemButton implements OnClickListener {
        private int position;
        private DemoActivity demoActivity;

        private void ItemButton(int pos) {
            // TODO Auto-generated method stub
            this.demoActivity = context;
            position = pos;
        }

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            Log.d(TAG, "ItemButton = " + list.get(position).get("id"));
        }

}

但是viewHolder.get.setOnClickListener(new ItemButton()); 是错误的,它只能找到函数ItemButton() ,而不能对函数ItemButton(int pos)罚款。

所以我不能将代码设置为viewHolder.get.setOnClickListener(new ItemButton(position));

我想念什么吗?

改成

viewHolder.get.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
             Log.d(TAG, "ItemButton = " + list.get(position).get("id"));
        }
    });

做这样的事情

@Override
    public View getView(**final** int position, View view, ViewGroup parent) {
        // TODO Auto-generated method stub

        ViewHolder viewHolder;
        Log.d(TAG, "getView");
        if(view == null){
            view = mInflator.inflate(R.layout.streamid_data, null);
            viewHolder = new ViewHolder();

            viewHolder.id_text = (TextView) view.findViewById(R.id.ID_text);
            viewHolder.get = (Button) view.findViewById(R.id.get);

            //The code is error , it only can set
          // viewHolder.get.setOnClickListener(new ItemButton());


        }else {
            viewHolder = (ViewHolder) view.getTag();
        }

   viewHolder.get.setOnClickListener(new View.OnOnClickListener(){

   @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
   //access **final** position here
        Log.d(TAG, "ItemButton = " + list.get(position).get("id"));
    }
   }));

        return view;
    }

}
Button btnSearchCustomer = (Button) view.findViewById(R.id.btnSearchCustomer);
       btnSearchCustomer.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View arg0) {
                    // TODO Auto-generated method stub



                }
            });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM