gpt4 book ai didi

java - 改造方法响应重用到另一个 Activity 中

转载 作者:太空宇宙 更新时间:2023-11-03 13:10:35 25 4
gpt4 key购买 nike

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

我想重用相同的方法并得到结果。将相同的方法复制并粘贴到其他 Activity 类中没有任何意义。然后会有相同的代码重复两次。

这是我的 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<MyResponse> call = apiInterface.getResponse();
call.enqueue(new Callback<MyResponse>() {

@Override
public void onResponse(Call<MyResponse> call, Response<MyResponse> response) {

if (response.body() != null) {
MyResponse myResponse = response.body();
List<Detail> 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<MyResponse> 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<MyResponse> call = apiInterface.getResponse();
call.enqueue(new Callback<MyResponse>() {
@Override
public void onResponse(Call<MyResponse> call, Response<MyResponse> response) {
if (response!=null && response.body() != null && mListener != null) {
mListener.responseData(response.body());
}
}
@Override
public void onFailure(Call<MyResponse> call, Throwable t) {

}
});
}

public void setOnDataListener(DataInterface listener) {
mListener = listener;
}

public interface DataInterface {
void responseData( MyResponse myResponse );
}
}

在你的 Activity 中,像这样调用类

SampleClass sampleClass = new SampleClass();
sampleClass.setOnDataListener(new SampleClass.DataInterface() {
@Override
public void responseData(MyResponse myResponse) {

}
});
sampleClass.getDataForId("UR ID");

同样在您的类中将 ID 存储为私有(private)成员变量

private Integer YOUR_ID;

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

  List<Detail> 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);
}
}

关于java - 改造方法响应重用到另一个 Activity 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46322283/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com