我正在制作要在RecyclerView Items中进行搜索的android应用程序。请求将成功发送到服务器。基本上我正在用关键字搜索。问题是我如何将搜索关键字发送到服务器并根据该关键字加载数据。 这是我的搜索活动:
答案 0 :(得分:0)
在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();
}
答案 1 :(得分:0)
结合使用TextWatcher和TimerTask来避免不必要的api触发
在您的startTask()
中致电onTextChanged()
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();
}
}