现在页面有许多按钮,点击按钮代码如下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,等
我自己的理解,应该不需要,所以编写以下的代码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);
还是没办法传入参数,大伙有没有什么好的解决方案.
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,等
我自己的理解,应该不需要,所以编写以下的代码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) {
}
你可以在用个Interface去转化
OnClickTestActivity.java
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);
}
}main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" > <TextView
android:id="@+id/tv"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello" /></LinearLayout>
OnClickTestActivity.java
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);
}
}main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" > <TextView
android:id="@+id/tv"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello" /></LinearLayout>
public void MyBtn();
}public class XXXActivity implements MyBtn
然后@Override
public void MyBtn() {
//但这样该如何写 ???
}
switch (v.getId()) {
case R.id.one:
mc.onClick(v, btnone.getTag().toString(),btnone.getText().toString());
break;
case R.id.two:
mc.onClick(v, btntwo.getTag().toString(),btntwo.getText().toString());
break;
....