0

Я хотел бы удалить предыдущие данные из arraylist во время отображения на autocompletetextview. Я попытался notifydatasetchanged(), но он должен быть реализован до того, как будет установлен адаптер. Я попытался добавить его во все места. нужно добавить фильтр. Но я не знаю, как это сделать. Я очень ценю любую помощь. Спасибо в Advance.Autocompletextview показывает предыдущие значения

BaseAdapter

public class SimpleAdapter extends BaseAdapter { 

    private Activity activity; 
    private ArrayList<HashMap<String, String>> data; 
    private static LayoutInflater inflater=null; 
    public ImageLoader imageLoader ; 
    Bitmap image; 
    private DisplayImageOptions defaultOptions; 

    public SimpleAdapter(Activity a, ArrayList<HashMap<String, String>> d) { 
     activity = a; 
     data=d; 
     inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

     defaultOptions = new DisplayImageOptions.Builder().build(); 

     ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(activity) 
     .threadPoolSize(2) 
     .memoryCache(new WeakMemoryCache()) 
     .discCacheFileNameGenerator(new Md5FileNameGenerator()) 
     .build(); 

     imageLoader = ImageLoader.getInstance(); 

    imageLoader.init(config); 

     imageLoader.init(ImageLoaderConfiguration.createDefault(activity)); 
    } 

    public int getCount() { 
     return data.size(); 
    } 

    public Object getItem(int position) { 
     return position; 
    } 

    public long getItemId(int position) { 
     return position; 
    } 

    public View getView(int position, View convertView, ViewGroup parent) { 
     View vi=convertView; 
     if(convertView==null) 
      vi = inflater.inflate(R.layout.list_row, null); 

     TextView title = (TextView)vi.findViewById(R.id.textView1); // title 
     TextView artist = (TextView)vi.findViewById(R.id.textView2); // artist name 
     TextView duration = (TextView)vi.findViewById(R.id.textView3); // duration 
     ImageView thumb_image=(ImageView)vi.findViewById(R.id.list_image); // thumb image 

     HashMap<String, String> song = new HashMap<String, String>(); 
     song = data.get(position); 

     // Setting all values in listview 
     title.setText(song.get("firstname")); 
     artist.setText(song.get("lastname")); 
     duration.setText(song.get("time")); 
     imageLoader.displayImage(song.get("link"), thumb_image, defaultOptions); 

     return vi; 
    } 


} 

MainActivity

public class AutoCompleteTextViewActivity extends Activity implements TextWatcher{ 
    /** Called when the activity is first created. */ 
    private TextView selection; 
    private AutoCompleteTextView actv; 


    SimpleAdapter adapter; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     selection=(TextView)findViewById(R.id.selection); 
     actv=(AutoCompleteTextView)findViewById(R.id.actv); 
     actv.addTextChangedListener(this); 



    } 

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

    } 

    public void beforeTextChanged(CharSequence s, int start, int count, 
      int after) { 
     // TODO Auto-generated method stub 

    } 

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

     Suggest Suggestdetails=new Suggest(); 
     Suggestdetails.execute(); 


    } 

    public class Suggest extends AsyncTask<Void, Void, JSONObject> { 
     @Override 
     protected JSONObject doInBackground(Void... params) { 

      String ResponseBody = null; 

      try { 


       //geoaddress here 

       HttpClient httpclient = new DefaultHttpClient(); 
       HttpPost httppost = new HttpPost("http://example.com/suggest.php"); 

       // Add your data 
       List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1); 

       nameValuePairs.add(new BasicNameValuePair("name", actv.getText().toString())); 


       httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

       // Execute HTTP Post Request 
       HttpResponse response = httpclient.execute(httppost); 

       BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent(), "iso-8859-1"), 8); 
       StringBuilder sb = new StringBuilder(); 
       sb.append(reader.readLine() + "\n"); 
       String line = "0"; 
       while ((line = reader.readLine()) != null) { 
        sb.append(line + "\n"); 
       } 
       reader.close(); 
       String result = sb.toString(); 

       Log.d("Fb tr",result); 
       // parsing data 
       return new JSONObject(result); 
      } catch (Exception e) { 
       e.printStackTrace(); 
       return null; 
      } 
     } 



     @Override 
     protected void onPostExecute(JSONObject result) { 




      if (result != null) { 
       // do something 
//    JSONObject tr = result; 

     List<HashMap<String,String>> aList = new ArrayList<HashMap<String,String>>(); 

      try{ 
       JSONArray arr=result.getJSONArray("Array"); 


      for(int i=0;i<arr.length();i++) 
      { 
       JSONObject e1 = arr.getJSONObject(i); 

       JSONObject json= (JSONObject) e1.get("data"); 

       String firstname = json.getString("firstname").trim(); 
       String lastname = json.getString("lastname").trim(); 
       String link = json.getString("link").trim(); 
       String time = json.getString("time").trim(); 


       HashMap<String, String> hm = new HashMap<String,String>(); 
        hm.put("firstname", firstname); 
        hm.put("lastname", lastname); 
        hm.put("link", link); 
        hm.put("time", time); 
        aList.add(hm); 

       } 


      }catch(Exception e){ 
       e.printStackTrace(); 

      } 


      String[] from = { "firstname","lastname","time","link"}; 


      int[] to = { R.id.textView1,R.id.textView2,R.id.textView3,R.id.list_image}; 

      adapter = new SimpleAdapter(AutoCompleteTextViewActivity.this,aList, R.layout.list_row,from,to); 

       actv.setAdapter(adapter); 

       adapter.notifyDataSetChanged(); 


      } else { 
       // error occured 
      } 
     } 


    } 

} 

ответ

1

После выполнения ваш AsyncTask очистить ArrayList.

Suggest Suggestdetails=new Suggest(); 
if(aList!=null){ 

Suggestdetails.execute(); 
aList.clear(); 
} else{ 

listView.setAdapter(adapter); 
adapter.notifyDataSetChanged(); 

} 
+0

'adapter.notifyDataSetChanged(); исключение null-указателя – jason

+0

проверить обновленный ответ. – Piyush

+0

Удивительно, что он работает + 1.Спасибо Mr.Gupta. – jason

0

Попробуйте очистить ALIST:

aList.clear(); 
+0

Я попытался. Где бы вы ни захотели, чтобы я его разместил. Также мне нужно добавить фильтр или что-то не уверенное. – jason

+0

после адаптера.notifyDataSetChanged(); в MainActivity() –

+0

, что даже не отображает регулярные результаты, которые я использовал. – jason

Смежные вопросы