我正在制作android应用程序,在其中我在RecyclerView Items中进行搜索。请求将成功发送到服务器。基本上我是用关键字搜索。问题是如何将搜索关键字发送到服务器并根据该关键字加载数据。这是我的搜索活动:
调用onTextChanged((中的getData((方法,并从搜索栏中获取字符串作为
searchItem=s.toString((;
@Override
public void onTextChanged(CharSequence s, int start, int before, int
count) {
Log.d("onTextChanged", getClass().getSimpleName() + " text
changed " + searchBar.getText());
searchItem = s.toString();
Log.d("Text",searchItem);
getData();
}
将TextWatcher与TimerTask一起使用以避免不需要的api触发
呼叫onTextChanged()
中的startTask()
private Timer timer;
private TimerTask timerTask;
private void startTask() {
cancelTimers();
timer = new Timer();
timerTask = new TimerTask() {
@Override
public void run() {
initSearch();
}
};
timer.schedule(timerTask, 500);
}
private void initSearch() {
if (searchView != null && searchView.getQuery() != null) {
String query = editText.getText().toString();
setupAdapter(query);
} else {
setupAdapter(null);
}
}
private void setupAdapter(String query) {
if (query != null) {
// start Api call
} else {
//clearResults();
}
}
private void cancelTimers() {
if (timer != null) {
timer.cancel();
timer.purge();
}
if (timerTask != null) {
timerTask.cancel();
}
}