在搜索视图中搜索文本后设置Recycler视图

时间:2018-02-09 06:53:41

标签: android android-recyclerview fragment searchview

我在设置了。我使用了来过滤recyclerview中的项目。当我开始输入时,中的项目已设置好并显示已过滤的列表项 这是适配器

的代码
public class NewAdapter extends RecyclerView.Adapter<NewAdapter.ViewHolder> {
     ArrayList<CurrentEntry> listItems,filterList;
     Context context;
    FragmentManager fm;
    FragmentTransaction tx;
    public void filter(String newText) {
        filterList.clear();
        if(TextUtils.isEmpty(newText))
        {
            filterList.addAll(listItems);
        }
        else
        {
            for(CurrentEntry entry:listItems)
            {
                if(entry.getName().toLowerCase().contains(newText))
                    filterList.add(entry);
            }
        }
       //    notifyDataSetChanged();
    }
    public NewAdapter (ArrayList<CurrentEntry> listItems, Context context) {
        this.listItems = listItems;
        this.context = context;
        this.filterList=new ArrayList<CurrentEntry>();
        this.filterList.addAll(this.listItems);

    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View v= LayoutInflater.from(parent.getContext())
                .inflate(R.layout.list_card,parent,false);
        return new ViewHolder(v);
    }

    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
           final CurrentEntry current=filterList.get(position);
          // holder.number.setText(current.getNo());
           holder.Name.setText(current.getName());
           holder.People.setText(current.getPeople());
           holder.Estimate.setText(current.getEstimate());
            holder.itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    String name=current.getName();
                    String people=current.getPeople();
                    String estimate=current.getEstimate();
                    Bundle args=new Bundle();
                    args.putString("name",name);
                    args.putString("people",people);
                    args.putString("estimate",estimate);
                    UserSatusInfo satusInfo=new UserSatusInfo();
                    satusInfo.setArguments(args);
                    AppCompatActivity activity=(AppCompatActivity)v.getContext();
                    activity.getSupportFragmentManager().beginTransaction().replace(R.id.frame,satusInfo).addToBackStack("info").commit();
                    Toast.makeText(v.getContext(),name,Toast.LENGTH_SHORT).show();
                    Log.i("name",name);
                }
            });
          // holder.Foodie.setText(current.getFoodie());
    }




    public class ViewHolder extends RecyclerView.ViewHolder  {

       // TextView number;
        TextView Name ;
        TextView People;
        TextView Estimate;
     //   TextView Foodie;
        public ViewHolder(View itemView) {
            super(itemView);
            Name=(TextView)itemView.findViewById(R.id.name);
            People=(TextView)itemView.findViewById(R.id.people);
            Estimate=(TextView)itemView.findViewById(R.id.estimate);
          //  Foodie=(TextView)itemView.findViewById(R.id.foodie);
            //itemView.setOnClickListener(this);
        }


    }
    @Override
    public int getItemCount() {
      //  return filterList.size();
        return (null!=filterList ? filterList.size():0);
    }
}  

这是设置RecyclerView

的代码
 @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment

        View v=inflater.inflate(R.layout.current_status,container,false);

        FloatingActionButton fab=(FloatingActionButton)v.findViewById(R.id.fab);
        prefs=getActivity().getPreferences(Context.MODE_PRIVATE);
        name=prefs.getString("name","empty");
        pass=prefs.getString("pass","empty");
        search=(SearchView) v.findViewById(R.id.search);
        recyclerView=(RecyclerView)v.findViewById(R.id.recyclerView);
        getData();
        recyclerView.setHasFixedSize(true);
       recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
        adapt=new NewAdapter(current,getActivity().getApplicationContext());
        // recyclerView.setAdapter(adapt);
        search.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
            @Override
            public boolean onQueryTextSubmit(String query) {
                return false;
            }

            @Override
            public boolean onQueryTextChange(String newText) {
                adapt.filter(newText);
                return true;
            }
        });
        fm=getFragmentManager();
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String tag="one";
                tx=fm.beginTransaction();
                fm.popBackStack();
                fm.popBackStack();
                tx.replace(R.id.frame,new Check(),tag);
                tx.addToBackStack(tag);
               // tx.remove();
                tx.commit();
            }
        });
        return v;
    }  

如何解决这个问题。 这是getRequest。

private void getData() {
        String json_req = "json_req";
        //String url =getContext().getString(R.string.CURRENT+"?limit="+100_STATUS);
        String url="";


        JsonObjectRequest req = new JsonObjectRequest(Request.Method.GET, url, null,
                new Response.Listener<JSONObject>() {
                    @Override
                    public void onResponse(JSONObject response) {
                       try
                       {

                           JSONObject object=new JSONObject(response.toString());
                         // String count= object.getString("count");
                           JSONArray data=object.getJSONArray("results");
                           for( i=0;i<data.length();i++)
                           {
                               JSONObject json = data.getJSONObject(i);
                             final   CurrentEntry c=new CurrentEntry();
                               userUrl=json.getString("name");
                               JsonObjectRequest request=new JsonObjectRequest(Request.Method.GET, userUrl, null, new Response.Listener<JSONObject>() {
                                   @Override
                                   public void onResponse(JSONObject response) {
                                       try {
                                           JSONObject temp=response.getJSONObject("user");
                                          // JSONObject user=loginback.getJSONObject("user");
                                           String foodie_name=temp.getString("first_name");
                                           String lname=temp.getString("last_name");
                                           c.setName(foodie_name+"\t"+lname);

                                       } catch (JSONException e) {
                                           e.printStackTrace();
                                       }
                                     //  adapt.notifyDataSetChanged();
                                   }
                               }, new Response.ErrorListener() {
                                   @Override
                                   public void onErrorResponse(VolleyError error) {

                                   }
                               })
                               {

                               };
                               AppController.getInstance().addToRequestQueue(request,second_req);
                               c.setPeople(json.getString("no_people"));
                               String temp=json.getString("predicated_t");
                             //  loginback=loginback.substring(11);
                             //  loginback=loginback.substring(0,loginback.length()-4);
                               c.setEstimate(temp+"min");
                             //  c.setNo(count);
                               current.add(c);
                              //  recyclerView.setAdapter(adapt);
                            }
                           recyclerView.setAdapter(adapt);
                           adapt.notifyDataSetChanged();
                       }
                       catch (JSONException e)
                       {
                           e.printStackTrace();
                       }

                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {

                    }

                })
        {

        };

        AppController.getInstance().addToRequestQueue(req, json_req);
    }

0 个答案:

没有答案
相关问题