首页 > 解决方案 > 在编辑文本中输入单词时更新回收站(搜索)

问题描述

我想在编辑文本中写一个单词时更新我的​​回收器,但是当我写例如(示例)时,我的列表等于单词(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 但我不在哪里使用它。

标签: androidandroid-recyclerviewnotifydatasetchanged

解决方案


我认为我们应该:

  • 实现get_search函数
  • 在编写新结果之后,我们必须通过调用notifyDataSetChanged来更新适配器

祝你好运


推荐阅读