当前位置: 代码迷 >> Android >> 替Button设置监听(OnClickListener)事件,能传入参数吗
  详细解决方案

替Button设置监听(OnClickListener)事件,能传入参数吗

热度:50   发布时间:2016-05-01 18:19:08.0
为Button设置监听(OnClickListener)事件,能传入参数吗?
现在页面有许多按钮,点击按钮代码如下
Java code
String filename =listData.get(position).get("file").toString(); //为说明该值是动态,下个Activity需要用到该值做逻辑处理。btnfive3.setOnClickListener(new OnClickListener() {                                                        @Override                            public void onClick(View v) {                                // TODO Auto-generated method stub                                                                                                            Intent intent = new Intent();                                            intent.putExtra("name", filename);                                            intent.setClass(mContext,                                                    Download.class);                                            startActivity(intent);                            }                        });

那页面不是要复制以上代码,为例如btnfour1 ,btnOne1,等
我自己的理解,应该不需要,所以编写以下的代码
Java code
class MyBtn implements OnClickListener{            public void onClick(View v) {            }            public void onClick(View v,String file) {                            }        }                        OnClickListener myDialogOnClick = new MyBtn() {                @Override                public void onClick(View v,String file) {                                        Intent intent = new Intent();                    intent.putExtra("name", file);                    intent.setClass(mContext,                            Download.class);                    startActivity(intent);                        }        }; 

但实际上发现用
btnfour4.setOnClickListener(myDialogOnClick);
 还是没办法传入参数,大伙有没有什么好的解决方案.

------解决思路----------------------
public void onClick(View v,String file) 你自己定义的 没有回调函数 所以不会有反映
------解决思路----------------------
写了个例子,你看看能不能帮你
OnClickTestActivity.java
Java code
package com.android.onclick;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.TextView;import android.widget.Toast;public class OnClickTestActivity extends Activity {    private MyClick mc;        private OnClickListener listener = new OnClickListener() {        @Override        public void onClick(View v) {            String value = "你要传入的参数";            if (mc != null) {                mc.onClick(v, value);            }        }    };        /** Called when the activity is first created. */    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        TextView tv = (TextView) findViewById(R.id.tv);        tv.setOnClickListener(listener);                setMyClickListener(new MyClick() {            @Override            public void onClick(View v, String value) {                Toast.makeText(OnClickTestActivity.this, value, 500).show();//这里做你所要的操作            }        });    }        private void setMyClickListener (MyClick mc) {        this.mc = mc;    }        private interface MyClick {        void onClick(View v, String value);    }}
  相关解决方案