gpt4 book ai didi

java - 改造回调用于根据参数执行其他操作

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

我从 Android 开发和改造开始。我的应用程序使用来自 mysql/apache 服务器的数据。改造后一切正常。但是,我想在应用程序中添加一个虚拟函数,其中 accountId == 0(因此无需登录),该函数使用应用程序中硬编码的数据,而不是服务器上的数据。

因此,我想修改调用,以便在 accountID == 0 的情况下使用我的类/方法,并在与改造相同的回调中返回相同类型的结果。

我尝试用代码向您展示:

MyService.java

interface MyService {
@GET("get.php")
Call<List<MyObject>> getAll(@Query("a") int accountid);
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(Consts.URL_SERVER)
.addConverterFactory(GsonConverterFactory.create())
.build();
}

MyCalls.java

public class MyCalls {
public interface CallbacksAll {
void onResponse(@Nullable List<MyObject> myobjetcs);
void onFailure();
}

public static void getAll(CallbacksAll callbacks, int accountId) {
final WeakReference<CallbacksAll> callbacksWeakReference = new WeakReference<>(callbacks);
///////////////////
// actually :
///////////////////
MyService myService = MyService.retrofit.create(MyService.class);
Call<List<MyObject>> call = myService.getAllByAccount(accountId);
///////////////////
// end actually
///////////////////

///////////////////
// what I'ld like
///////////////////
MyService myService;
Call<List<MyObject>> call;
if ( accountId > 0 ) {
myService = MyService.retrofit.create(MyService.class);
call = myService.getAll(accountId);
} else {
myService = ??? // I don't really know what to create and do here
call = MyClass.getAll(); // my class/method nevermind
}
///////////////////
// end what I'd like
///////////////////

///////////////////
// what I'd like to NOT change
///////////////////
call.enqueue(new Callback<List<MyObject>>() {
@Override
public void onResponse(@NonNull Call<List<MyObject>> call, @NonNull Response<List<MyObject>> response) {
if (callbacksWeakReference.get() != null)
callbacksWeakReference.get().onResponse(response.body());
}

@Override
public void onFailure(@NonNull Call<List<MyObject>> call, @NonNull Throwable t) {
if (callbacksWeakReference.get() != null) callbacksWeakReference.get().onFailure();
}
});
}

我希望你能理解我蹩脚的英语和我想要的东西,并且你能够用简单的例子给我想法。

谢谢

最佳答案

没有足够的代表发表评论,所以我把我的解决方案放在这里。

尽管解决方案如此简单,但花费了很多时间。我只需添加:

    if (accountId == 0) {
callbacks.onResponse(MyObject.getAll());
} else {
final WeakReference<CallbacksAll> callbacksWeakReference = new WeakReference<>(callbacks);
[...]
});
}

public static void getAll(CallbacksAll callbacks, int accountId) {

关于java - 改造回调用于根据参数执行其他操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51141932/

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