【发布时间】:2018-11-24 05:54:27
【问题描述】:
在我的应用程序中,我想使用 Retrofit2 库来处理请求,并且我想设置 动态 响应模型,我不想将模型设置为 interface 模型!
例如:
我的接口方法是:
@GET("api/server?mode=supports")
Call<SupportListResponse> getSupport_List(@Header("jwt") String token);
我不想将 SupportListResponse 设置为 Call<> ,我想从 Activity/Fragment 类中动态设置此模型!
如何设置通用模型类而不是SupportListResponse?
我的活动完整代码:
public class TimerRecyclerActivity extends AppCompatActivity {
private RecyclerView recyclerView;
private ProgressBar timerProgressBar;
private List<Today> model = new ArrayList<>();
private Adapter adapter;
private ApiInterface api;
private LinearLayoutManager layoutManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_timer_recycler);
api = ApiClient.getClient().create(ApiInterface.class);
adapter = new Adapter(getApplicationContext(), model);
adapter.setHasStableIds(true);
recyclerView = findViewById(R.id.timerRecyclerView);
timerProgressBar = findViewById(R.id.timerProgressBar);
layoutManager = new LinearLayoutManager(getApplicationContext());
recyclerView.setLayoutManager(layoutManager);
recyclerView.setAdapter(adapter);
Call<AuctionsListResponse> call = api.getMainAuctions("", 1, 10);
call.enqueue(new Callback<AuctionsListResponse>() {
@Override
public void onResponse(Call<AuctionsListResponse> call, Response<AuctionsListResponse> response) {
if (response.isSuccessful()) {
if (response.body().getRes() != null) {
if (response.body().getRes().getToday().size() > 0) {
timerProgressBar.setVisibility(View.GONE);
model.clear();
model.addAll(response.body().getRes().getToday());
adapter.notifyDataSetChanged();
}
}
}
}
@Override
public void onFailure(Call<AuctionsListResponse> call, Throwable t) {
}
});
}
}
怎么办?
【问题讨论】:
-
你想只得到json响应,这样你就可以根据你的要求制作模型类了吗?
-
以字符串形式获取响应,然后根据响应中的某个值将其解析为适当的模型类。
-
@007,是的,我的兄弟。你能帮助我吗?请
-
泛型等价物将是 (declaration) Call
getSupport_List(@Header("jwt") String token);所以你可以通过使用 Call call = calls. getSupport)List("") 来推断,但我认为改造使用 aapt 来生成代码,所以你的问题不在于打字