LIstView Filter From Json Returns First Item Only Everytime

时间:2016-07-11 19:35:21

标签: android json

I tried to get help on this post without any luck, I played around with code but still no luck. My list for example is as follows: Blue, Red, Purple from Json remote server.

  1. When I type B.. it returns Blue. OK
  2. When I type X.. it returns no results because no color matched "X". OK
  3. When I type R.. (or RE.. or RED) it returns Blue instead of returning Red.

Conclusion - The code always returns the first item on the list when filtered.

My code:

JSON:

private class JsonReadTask extends AsyncTask<String, Void, String> {

        //Pending 01
       private ProgressDialog dialog = new ProgressDialog(getActivity());

        @Override
        protected void onPreExecute() {
            this.dialog.setMessage("Loading Rooms, Please Wait");
            this.dialog.show();
        }

      @Override
      protected String doInBackground(String... params) {
       HttpClient httpclient = new DefaultHttpClient();
       HttpPost httppost = new HttpPost(params[0]);
       try {
        HttpResponse response = httpclient.execute(httppost);
        jsonResult = inputStreamToString(response.getEntity().getContent()).toString();
       }


       catch (ClientProtocolException e) {
        e.printStackTrace();
       } catch (IOException e) {
        e.printStackTrace();
       }
       return null;
      }

      private StringBuilder inputStreamToString(InputStream is) {
       String rLine = "";
       StringBuilder answer = new StringBuilder();
       BufferedReader rd = new BufferedReader(new InputStreamReader(is));

       try {
        while ((rLine = rd.readLine()) != null) {
         answer.append(rLine);
        }
       }

       catch (IOException e) {
        // e.printStackTrace();
        Toast.makeText(getActivity(),"Error..." + e.toString(), Toast.LENGTH_LONG).show();
       }
       return answer;
      }

      @Override
      protected void onPostExecute(String result) {

            //Pending 02
            if (dialog.isShowing()) {
                dialog.dismiss();
            }

        adapter.notifyDataSetChanged();
        try{  
       ListDrwaer(); //has ConnectionException (when it cannot reach server)
        }catch (Exception e){
            Toast.makeText(getActivity(), "Please check your connection..", Toast.LENGTH_LONG).show();
            }
      }
     }// end async task

     public void accessWebService() {
      JsonReadTask task = new JsonReadTask();
      // passes values for the urls string array
      task.execute(new String[] { "http://www.website.com/file.php?psortby="+sortby});
     }

     // build hash set for list view
     public void ListDrwaer() {

      try {
       JSONObject jsonResponse = new JSONObject(jsonResult);
       JSONArray jsonMainNode = jsonResponse.optJSONArray("room_info");

       for (int i = 0; i < jsonMainNode.length(); i++) {
        JSONObject jsonChildNode = jsonMainNode.getJSONObject(i);
        String request_title = jsonChildNode.optString("Title");
        String request_members = jsonChildNode.optString("Members");

        request_title_replaced = request_title.replace("room_", "");

        arrRequest_Title.add(request_title_replaced);
        arrRequest_Members.add(request_members);

       }
      } catch (JSONException e) {
          System.out.println("Json Error Rooms" +e.toString());
          //Toast.makeText(getApplicationContext(), "No Rooms To Load", Toast.LENGTH_SHORT).show();

      }


      inputSearch.addTextChangedListener(new TextWatcher() {

            @Override
            public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) {
                // TODO Auto-generated method stub

                adapter.getFilter().filter(cs); 


            }

            @Override
            public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
                    int arg3) {
                // TODO Auto-generated method stub

            }

            @Override
            public void afterTextChanged(Editable s) {
                // TODO Auto-generated method stub

            }
        });

}

Adapter:

class RoomsAdapter extends ArrayAdapter<String>
            {

             @Override
             public void clear() {
                 super.clear();

                 arrRequest_Title.clear();
                 arrRequest_Members.clear();

             }



                Context context;
                List<String> Request_Title;
                List<String> Request_Members;

                RoomsAdapter(Context c, List<String> Request_Title, List<String> Request_Members)
                {
                    super(c, R.layout.activity_rooms_single, R.id.textTitle, Request_Title);
                    this.context=c;
                    this.Request_Title=Request_Title;
                    this.Request_Members=Request_Members;
                }


                @Override
                public View getView(int position, View convertView, ViewGroup parent) {
                    // TODO Auto-generated method stub

                    View row=convertView;
                    if(row==null)
                    {
                    LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                    row = inflater.inflate(R.layout.activity_rooms_single, parent, false);      
                    }

                    TextView txtTitle = (TextView) row.findViewById(R.id.textTitle);
                    TextView txtMembers = (TextView) row.findViewById(R.id.textMembers);

                    txtTitle.setText(Request_Title.get(position));
                    txtMembers.setText(Request_Members.get(position));

                    return row;
                    }
                }

Fragment Class:

public class Fragment_01_Rooms extends Fragment

0 个答案:

没有答案