Autocompletetextview显示以前的值

时间:2014-01-31 05:41:13

标签: android android-adapter baseadapter autocompletetextview

我想在autocompletetextview上显示时从arraylist中删除以前的数据。我尝试过notifydatasetchanged()但是必须在设置适配器之前实现。我尝试在所有地方添加它。我想我需要添加过滤器但我不知道怎么做。我真的很感激任何帮助。谢谢你。

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
            }
        }


    }

}

2 个答案:

答案 0 :(得分:1)

执行AsyncTask后,清除ArrayList。

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

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

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

 }

答案 1 :(得分:0)

尝试清除aList:

aList.clear();