我有一个字符串数组,我想调用Reterfit这么多次,因为这个数组的大小实际上是。但是现在,尽管我在这个循环中声明了loop并调用了referfit,但当我在调试模式下运行时,我看到我的应用程序从来没有在ApiHit方法中输入onRespons,除非他到达for循环的结尾。然后finnaly,他在每个循环迭代中做我想做的事情(输入到onResponse并执行我的其余代码,其中包括)。现在每个迭代调用:
call = tagApi.getTasks(tags);
call.enqueue(new Callback<Api>()
并转到方法的末尾,跳过onResponse和onFailure。为什么?
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//hide toolbar
/*Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);*/
ButterKnife.bind(this);
listTags = new ArrayList<>();
listTagsFinal = new ArrayList<>();
listTagsRest = new ArrayList<>();
strings = new ArrayList<>();
//search text handler
svSearch.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
result = query.split(",?\\ ");
//numberTag = result.length;
for (int i = 0; i < result.length; i++) {
ApiHit(result[i]);
}
FinalSort();
return true;
}
@Override
public boolean onQueryTextChange(String newText) {
//This is your adapter that will be filtered
return false;
}
});
}
public void ApiHit(final String tags) {
//retrofit
TagApi tagApi = NetworkService.retrofit.create(TagApi.class);
Call<Api> call;
//recieve words from searchview, divide and put into string array
call = tagApi.getTasks(tags);
call.enqueue(new Callback<Api>() {
@Override
public void onResponse(Call<Api> call, Response<Api> response) {
//recieve possible tags for one word and put it into list
for (int i = 0; i < response.body().getResults().size(); i++) {
listTags.add(new RowModel(response.body().getResults().get(i).getTag(), response.body().getResults().get(i).getAbsRelevance()));
}
//sort whole list
Collections.sort(listTags);
//add first tags to list
if (listTags.size()>0) {
for (int y = 0; y < 3 && y < listTags.size() ; y++) {
listTagsFinal.add(new RowModel(listTags.get(y).getName(), listTags.get(y).getPosition()));
}
}
if (!isTagognizerTag) {
listTagsFinal.add(new RowModel("tagognizer", 0.0022055893));
isTagognizerTag = true;
}
//add rest tags to list
for (int y = 3; y < listTags.size(); y++) {
listTagsRest.add(new RowModel(listTags.get(y).getName(), listTags.get(y).getPosition()));
}
//create final array when response reach last tag
/* if (checker == tags.length) {
//final sort
FinalSort();
}*/
listTags.clear();
checker++;
}
@Override
public void onFailure(Call<Api> call, Throwable t) {
}
});
}
公共类Api{
@SerializedName("geo")
@Expose
private List<Float> geo = null;
@SerializedName("rank")
@Expose
private int rank;
@SerializedName("results")
@Expose
private List<Result> results = null;
@SerializedName("tag")
@Expose
private String tag;
@SerializedName("tagExists")
@Expose
private boolean tagExists;
public List<Float> getGeo() {
return geo;
}
public void setGeo(List<Float> geo) {
this.geo = geo;
}
public int getRank() {
return rank;
}
public void setRank(int rank) {
this.rank = rank;
}
public List<Result> getResults() {
return results;
}
public void setResults(List<Result> results) {
this.results = results;
}
public String getTag() {
return tag;
}
public void setTag(String tag) {
this.tag = tag;
}
public boolean isTagExists() {
return tagExists;
}
public void setTagExists(boolean tagExists) {
this.tagExists = tagExists;
}
}
如果Regetfit跳过onResponse和onFailure方法,则在GET、POST方法中出现错误。正确检查方法类型。我有过一次问题。
我使用restful api进行语音调用。我用这个来称呼自己。当我的电话响时,我不接通就挂断了。大约20秒后,我又接到了Twilio的电话。 curl'https://api.twilio.com/2010-04-01/accounts/accountsid/calls.json'-x post--data-urlencode'to=+1111111'--data-urlencode'from=+
我想知道如何将response.body()作为参数传递,以便进一步处理它。因为现在我只能将其传递给Toast或text View的setText,它工作得很好。但是如果我尝试将其传递给将其保存为SharedPrefs或类似的函数,它只是传递一个空对象。我不明白为什么第一个有效,但第二个无效,有什么区别? 我的JSON响应正文如下所示: 我的Pojo是这样的: 我执行调用的函数(在点击登录按钮后调
我想在Android系统中拦截来电。一种方法是扩展“broadcastreceiver”。还有别的办法吗?
我使用com.squareup.reformation:reformation:2.0.0-beta2,遇到了一些问题。我想添加通过按钮关闭部分下载的可能性。因此,我在OkHTTPClient中找到了cancel(对象标记)方法。我试图找到可以放置此标记值的位置,但没有找到任何东西。同样,将null作为参数传递也根本不起作用。有人能告诉我在哪里可以贴标签或建议其他方法吗?
如果使用基于回调的异步测试,如果done()多次调用Mocha,则会抛出错误。这对于捕获意外的双重回调非常方便。 it('double done', function(done) { // Calling `done()` twice is an error setImmediate(done); setImmediate(done); }); 运行上面的测试将给出以下错误消息: $ ./nod
我在调用我的onLeScan时遇到问题。我在开始扫描中放置了一个标签,每次都会被调用。出于某种原因,我的onLeScan永远不会被调用。有人看到我所做的有问题吗?onLeScan应该在开始扫描后立即调用,对吗? 编辑更改了我的onLeScan函数。仍然不起作用,但我认为我正在走向正确的道路。DeviceBeacon是一个只包含方法的类:getName()、getSignal()和getAddres