0

suis en utilisant une méthode normale et volley on_response ou méthode on_error. mon code est d'extraire les données de sqlite et de les ajouter à une liste de matrices et de créer un adaptateur avec cette liste et de placer cet adaptateur dans un autocompletetextview. J'utilise la même ligne de codes à cet effet dans les deux méthodes, mais dans la méthode normale, un seul élément sera présent dans l'adaptateur, mais dans la méthode de volée il y aura tous les éléments dans l'adaptateur, je ne comprends pas quel est le problème. je dois méthode normale s'énerverméthode normale ne fonctionne pas mais la méthode de volée fonctionne parfaitement

noramal methos:

private void prepareMyLists() { 
     ArrayList<String> arrlist = new ArrayList<String>(); 
       String selectQuerys = "select distinct location from tb_user where location like" + 
         "'"+autoservice.getText().toString()+"%'"+" or "+"'% "+autoservice.getText().toString()+"%'"; 
       SQLiteDatabase dbs = sq.getReadableDatabase(); 
       Cursor cursors = dbs.rawQuery(selectQuerys, null); 
       while (cursors.moveToNext()) 
        arrlist.add((cursors.getString(cursors.getColumnIndex("location")))); 

        adapter1 = new ArrayAdapter<String>(
          getBaseContext(), 
          R.layout.drop_list_item, 
          arrlist); 

        autocompletetextview.setAdapter(adapter1); 
      } 
    } 

Méthode Volley:

private void prepareMyList() { 
     String LOCATION = "http://android.thusharaphotos.com/sear778ch11.php"; 


     StringRequest stringRequest = new StringRequest(Request.Method.POST,LOCATION, new Response.Listener<String>() { 

      @Override 
      public void onResponse(String response) { 


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

       ArrayList<String> arrlist = new ArrayList<String>(); 
       String selectQuerys = "select distinct location from tb_user where location like" + 
         "'"+autoservice.getText().toString()+"%'"+" or "+"'% "+autoservice.getText().toString()+"%'"; 
       SQLiteDatabase dbs = sq.getReadableDatabase(); 
       Cursor cursors = dbs.rawQuery(selectQuerys, null); 
       while (cursors.moveToNext()) 
        arrlist.add((cursors.getString(cursors.getColumnIndex("location")))); 

        adapter1 = new ArrayAdapter<String>(
          getBaseContext(), 
          R.layout.drop_list_item, 
          arrlist); 

        autocompletetextview.setAdapter(adapter1); 
      } 
     }) { 
      @Override 
      protected Map<String, String> getParams() { 
       Map<String, String> params = new HashMap<String, String>(); 
       params.put("location_name", autoservice.getText().toString()); 
       return params; 
      } 
     }; 

     RequestQueue requestQueue = Volley.newRequestQueue(getBaseContext()); 
     requestQueue.add(stringRequest); 
    } 

onclick pour autocompleteTextView

autocompletetextview.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
       setLocation((String)parent.getItemAtPosition(position)); 

      } 
     }); 
+0

Où est défini sq? –

+0

Sq défini dans oncreate –

+0

Alors que le débogage est à la fois l'arrlist est la même taille? –

Répondre

0

Déplacez votre new ArrayAdapter et setAdapter en dehors de la boucle while .

Si vos deux exemples sont dans l'application char pour char, cela est déjà fait dans l'exemple de volée.

+0

pas de changement même problème –