android - 在编辑文本中输入单词时更新回收站(搜索)
问题描述
我想在编辑文本中写一个单词时更新我的回收器,但是当我写例如(示例)时,我的列表等于单词(sa)和(示例)。我使用凌空从服务器获取数据。我的代码:
public void get_search(String text) {
JsonArrayRequest jsonObjectRequest = new JsonArrayRequest(Request.Method.GET, G.url_search + text, null, new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
for (int i = 0; i < response.length(); i++) {
JSONObject jsonObject = null;
try {
Job job = new Job();
jsonObject = response.getJSONObject(i);
int job_lat = jsonObject.getInt("job_lat");
job.setJob_lng(job_lng);
list.add(job);
} catch (JSONException e) {
e.printStackTrace();
}
jobAdapter.setData(list);
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
});
requestQueue.add(jsonObjectRequest);
}
}
searchView.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
Log.i("log", "onTextChanged: " + charSequence.toString());
get_search(charSequence.toString());
}
@Override
public void afterTextChanged(Editable editable) {
}
});
和我的适配器代码:
public class SearchAdapter extends RecyclerView.Adapter<SearchAdapter.ViewHolder> {
private Context context;
private List<Job> list;
public SearchAdapter(Context context, List<Job> list) {
this.context = context;
this.list = list;
}
public void setData(List<Job> list){
this.list = list;
notifyDataSetChanged();
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(context).inflate(R.layout.search_index,parent,false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
Job job = list.get(position);
holder.job_owner.setText(job.getJob_title());
}
@Override
public int getItemCount() {
return list.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
TextView job_owner;
public ViewHolder(View itemView) {
super(itemView);
job_owner = (TextView) itemView.findViewById(R.id.textViewName);
}
}
}
好的,我很希望理解我的问题应该使用 notifyDataSetChanged 但我不在哪里使用它。
解决方案
我认为我们应该:
- 实现get_search函数
- 在编写新结果之后,我们必须通过调用notifyDataSetChanged来更新适配器
祝你好运
推荐阅读
- css - 材料 11 - 应用 mat-sort-header 时无法右对齐 5 列中的 2 列 mat-header-cell
- q# - Q# Create new project...' 导致错误
- sql - 特定时间的 SQL 移动平均线
- imagemagick - 如何按顺序循环浏览一个文件夹中的图像并与另一个文件夹中的最新图像进行比较
- reactjs - 使用 Material-UI 滑块测试 Formik 表单
- python - 插入多个值 - sqlite3.InterfaceError: Error binding parameter 0 - 可能不支持的类型
- python - 确保 tkinter 按钮仅按特定顺序工作
- javascript - React - 有没有办法在不弄乱组件的情况下获得价值?
- javascript - 在 JavaScript 中从 Class Array 启动随机类
- ios - 无法使用 unwind segue 展开到 UITableviewController