2017-10-20 34 views
0

salut ami je veux ajouter l'option de recherche à la vue de liste dans l'activité de fragment mais je ne peux pas accéder à l'adaptateur de vue de liste de addTextChangedListener. pouvez-vous s'il vous plaît m'aider.je ne peux pas trouver la réponse d'internet, pouvez-vous s'il vous plaît m'aider à résoudre ce.data partie de chargement fonctionne correctement.je veux filtrer les données par code.option de filtre dans l'activité de fragment de vue de liste

enter image description here

public class FindPeopleFragment extends Fragment implements AdapterView.OnItemClickListener { 
     private static final String TAG_CONTACTS = "contacts"; 
     private static final String TAG_ID = "GUID"; 
     private static final String TAG_NAME = "GUNO"; 
     private static final String TAG_Code = "ShipNo"; 
     private static final String TAG_ADDRESS = "Description"; 
     private static final int CAMERA_CAPTURE_IMAGE_REQUEST_CODE = 100; 
     private static final int CAMERA_CAPTURE_VIDEO_REQUEST_CODE = 200; 
     public static final int MEDIA_TYPE_IMAGE = 1; 
     public static final int MEDIA_TYPE_VIDEO = 2; 

     private static final String IMAGE_DIRECTORY_NAME = "Hello Camera"; 
     // private static final int RESULT_OK = 1 ; 
     // private static final int RESULT_CANCELED = 2 ; 

     private Uri fileUri; // file url to store image/video 

     ImageView imgPreview; 
     private VideoView videoPreview; 

     private String baid = ""; 
     private PopupWindow pwindo; 
     Button btndeliver; 
     Button btnreject; 
     Button btncannot; 
     Button btnother; 
     Button btnClosePopup; 
     EditText inputSearch; 

     // Button btnCallPopup; 
     // Button btnwtsappPopup; 
     public String pnumb; 
     public String CusMobileNo; 


     // contacts JSONArray 
     JSONArray contacts = null; 

     // Hashmap for ListView 
     ArrayList<HashMap<String, String>> contactList; 


     public FindPeopleFragment(){} 

     @Override 
     public View onCreateView(LayoutInflater inflater, ViewGroup container, 
           Bundle savedInstanceState) { 

      if (android.os.Build.VERSION.SDK_INT > 9) { 
       StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); 
       StrictMode.setThreadPolicy(policy); 
      } 

      Movie movie = new Movie(); 
      baid=movie.getGUID(); 

      View rootView = inflater.inflate(R.layout.fragment_find_people, container, false); 

      contactList = new ArrayList<HashMap<String, String>>(); 



      WebServiceCaller webServiceCaller = new WebServiceCaller(); 
      String Result = webServiceCaller.mydespatchDettails(baid); 

      try { 
       JSONObject Jasonobject = new JSONObject(Result); 
       JSONArray Jarray = Jasonobject.getJSONArray("PendingDespatch"); 

       for (int i = 0; i < Jarray.length(); i++) { 
        JSONObject json_data = Jarray.getJSONObject(i); 

        String id = json_data.getString(TAG_ID); 
        String name = json_data.getString(TAG_NAME); 
        String code = json_data.getString(TAG_Code); 
        String address = json_data.getString(TAG_ADDRESS); 

        HashMap<String, String> contact = new HashMap<String, String>(); 

        // adding each child node to HashMap key => value 
        contact.put(TAG_ID, id); 
        contact.put(TAG_NAME, name); 
        contact.put(TAG_Code, code); 
        contact.put(TAG_ADDRESS, address); 

        // adding contact to contact list 
        contactList.add(contact); 

       } 
       ListView list = (ListView) rootView.findViewById(R.id.list); 

        final ListAdapter adapter = new SimpleAdapter(getActivity() 
         ,contactList, 
         (R.layout.list_item), new String[] { TAG_NAME,TAG_Code,TAG_ID 
         ,TAG_ADDRESS }, new int[] { R.id.code, 
         R.id.names, R.id.city,R.id.address }); 

       list.setAdapter(adapter); 

       list.setOnItemClickListener(this); 
       //list.setListAdapter(adapter); 
       inputSearch = (EditText) rootView.findViewById(R.id.inputSearch); 

       inputSearch.addTextChangedListener(new TextWatcher() { 
        @Override 
        public void beforeTextChanged(CharSequence cs, int start, int count, int after) { 

         System.out.println("Text ["+cs+"]"); 
        FindPeopleFragment.this.adapter.getFilter().filter(cs); 

    //***This is problem i cannot access adapter here..i want to to search by code*** 





         // FindPeopleFragment.TAG_Code..getFilter().filter(cs); 
        } 

        @Override 
        public void onTextChanged(CharSequence s, int start, int before, int count) { 

        } 

        @Override 
        public void afterTextChanged(Editable s) { 

        } 
       }); 

      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 
      return rootView; 
     } 
+0

'adapter' finale ListAdapter ->' finale SimpleAdapter adapter' quand vous le faites 'adapter.getFilter() filtre (cs);.' Devrait fonctionner parfaitement – pskink

+0

Thnaks bro je woks .. merci beaucoup .. –

Répondre

0

Que diriez-vous de changer cette ligne:

FindPeopleFragment.this.adapter.getFilter().filter(cs); 

dans:

adapter.getFilter().filter(cs); 

ou

Que diriez-vous à l'aide AutoCompleteTextview pour votre sear fonction ch.

AutoCompleteTextView documentation

Example

+0

cher ami ici montre l'adaptateur comme soulignent rouge .. si je fais l'adaptateur final, getFilter() montre comme rouge. je ne peux pas comprendre quel est le problème..great aider bro .. je suis empiler ici à partir de deux jours –

+0

Cela fonctionne pour moi .. merci beaucoup ami .. –

+0

@KasunChaturanga si cela fonctionne, pouvez-vous accepter ma réponse? Heureux d'avoir pu aider. – Frandall