java中的方法重用_java-改造方法响应重用到另一个活动中

如何从getDataForId(Integer.toString(1))获取数据?通过从DisplayData类调用相同的getDataForId方法?

我想重用相同的方法并获得结果.

将相同的方法复制并粘贴到其他活动类中没有任何意义.然后将有相同的代码重复两次.

这是我的DisplayData.class

public class DisplayData extends AppCompatActivity {

Detail reqDetail;

String BASE_URL = "";

TextView name;

ImageView image;

@Override

protected void onCreate(@Nullable Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.display_data);

name = (TextView) findViewById(R.id.name);

image = (ImageView)findViewById(R.id.image);

public void getDataForId(final String id) {

ApiInterface apiInterface = APIClient.getApiInterface();

Call call = apiInterface.getResponse();

call.enqueue(new Callback() {

@Override

public void onResponse(Call call, Response response) {

if (response.body() != null) {

MyResponse myResponse = response.body();

List details = myResponse.getDetails();

for (Detail d : details) {

if (d.getId().equals(id)) {

reqDetail = d;

name.setText(reqDetail.getName());

Picasso.with(DisplayData.this)

.load(reqDetail.getName())

.placeholder(R.mipmap.ic_launcher)

.error(R.mipmap.ic_launcher)

.into(image);

}

}

}

}

@Override

public void onFailure(Call call, Throwable t) {

}

});

}

这是我的SecondData类,我想在其中通过重用相同的方法来显示DisplayData的相同数据响应

public class SecondData extends AppCompatActivity {

Detail reqDetail;

String BASE_URL = "";

TextView name;

ImageView image;

@Override

protected void onCreate(@Nullable Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.second_main);

name = (TextView) findViewById(R.id.name);

image = (ImageView)findViewById(R.id.image);

}

}

解决方法:

创建一个类来进行这样的改造调用

public class SampleClass {

private DataInterface mListener;

public SampleClass() {

super();

}

public void getDataForId(final String id) {

ApiInterface apiInterface = APIClient.getApiInterface();

Call call = apiInterface.getResponse();

call.enqueue(new Callback() {

@Override

public void onResponse(Call call, Response response) {

if (response!=null && response.body() != null && mListener != null) {

mListener.responseData(response.body());

}

}

@Override

public void onFailure(Call call, Throwable t) {

}

});

}

public void setOnDataListener(DataInterface listener) {

mListener = listener;

}

public interface DataInterface {

void responseData( MyResponse myResponse );

}

}

然后在您的活动中像这样调用课程

SampleClass sampleClass = new SampleClass();

sampleClass.setOnDataListener(new SampleClass.DataInterface() {

@Override

public void responseData(MyResponse myResponse) {

}

});

sampleClass.getDataForId("UR ID");

同样在您的课程中,将ID存储为私有成员变量

private Integer YOUR_ID;

然后在获取结果时,将结果ID与该ID进行比较

List details = myResponse.getDetails();

for (Detail d : details) {

if (d.getId().equals(YOUR_ID)) {

reqDetail = d;

name.setText(reqDetail.getName());

Picasso.with(DisplayData.this)

.load(reqDetail.getName())

.placeholder(R.mipmap.ic_launcher)

.error(R.mipmap.ic_launcher)

.into(image);

}

}

标签:retrofit2,reusability,java,android,methods

来源: https://codeday.me/bug/20191025/1930473.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值