我想在编辑文本中写一个单词时,我的回收商会更新,但是例如,当我写(sample)时,我的列表等于word(sa)和(sample)。 我使用凌空从服务器获取数据。 我的代码:
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,但是我不在哪里使用它。
答案 0 :(得分:0)
您的适配器中需要setData方法
public void setData(List<Job> list){
this.list = list;
notifyDataSetChanged();
}
在您的jsonObjectRequest onResponse
adapter.setData(list);
在您的list.clear()
的第一行中添加onresponse
答案 1 :(得分:0)
我认为我们应该:
祝你好运
答案 2 :(得分:0)
将此代码添加到第一行响应 list.clear(); 它起作用 感谢@ prashant17