gpt4 book ai didi

java - 异步任务 : onPostExecute runs twice?

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

我正在运行异步任务以从服务器加载结果。我正在使用 SearchView 传递查询词。然后使用我自己的 API 来获取数据。我对为什么 AsyncTask 输出数据两次感到困惑。

 mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(final String query) {
linearLayout.removeAllViews();
new Search(query, linearLayout).execute();

return false;
}

@Override
public boolean onQueryTextChange(String newText) {
linearLayout.removeAllViews();
return false;
}
});




private class Search extends AsyncTask<Void, Void, ArrayList<Business>> {

String query;
LinearLayout linearLayout;

public Search(String query, LinearLayout linearLayout) {
this.query = query;
this.linearLayout = linearLayout;
}

@Override
protected ArrayList<Business> doInBackground(Void... params) {
YelpApi yelpApi = new YelpApi(getString(R.string.yelp_consumer_key), getString(R.string.yelp_consumer_secret), getString(R.string.yelp_token), getString(R.string.yelp_token_secret));
HashMap<String, String> parameters = new HashMap<>();
parameters.put("term", query);
parameters.put("sort", "2");
parameters.put("limit", "5");
return yelpApi.searchLocation("North Hills, CA", parameters);
}

@Override
protected void onPostExecute(ArrayList<Business> businesses) {
for (int i = 0; i < businesses.size(); i++) {
TextView mTextView = new TextView(getApplicationContext());
mTextView.setText(businesses.get(i).getName());
mTextView.setTextColor(Color.BLACK);
linearLayout.addView(mTextView);
}
}
}

但是,当我运行搜索时,会显示两个数据实例。我不知道我做错了什么。

最佳答案

将您的查询搜索监听器更改为类似这样的内容

 mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(final String query) {
linearLayout.removeAllViews();
new Search(query, linearLayout).execute();

return true;
}

@Override
public boolean onQueryTextChange(String newText) {
linearLayout.removeAllViews();
return false;
}
});

希望能成功

关于java - 异步任务 : onPostExecute runs twice?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31871055/

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