Tecnologia do Blogger.
RSS

[androidbrasil-dev] Filtro customizado em ListView usando BaseAdapter

Olá, tudo bem?

Minha dúvida é que não consigo fazer um Search em meus amigos do facebook na minha listview usando uma basedapter... 

Segue meu codigo abaixo

/*

     * callback after friends are fetched via me/friends.

     * Chamada dos amigos atraves do me/friends

     */

    public class FriendsRequestListener extends BaseRequestListener {


        @Override

        public void onComplete(final String response, final Object state) {

            dialog.dismiss();

 

            try{

    arrayName = new ArrayList<String>();

    jsonArray = new JSONObject(response).getJSONArray("data");

    for (int i = 0; i < jsonArray.length(); i++) {

JSONObject json_data = jsonArray.getJSONObject(i);

if(json_data.has("name")){

String getFriendName = json_data.getString("name");

arrayName.add(getFriendName);

}else{

String getFriendName = null;

arrayName.add(getFriendName);

}

    }

            }catch(JSONException e){

            Log.d(TAG, e.getMessage());

                return;

            }

            

            stringName = new String[arrayName.size()];

            stringName = arrayName.toArray(stringName);

            

        EscolhaAmigosFacebook.this.runOnUiThread(new Runnable() {

@Override

public void run() {

adapter = new FriendListAdapter(EscolhaAmigosFacebook.this, stringName, arrayName);

friendsListView.setTextFilterEnabled(true);

friendsListView.setAdapter(adapter);

}

});

        }




/**

     * Definition of the list adapter

     */

    public class FriendListAdapter extends BaseAdapter implements Filterable {

    

        String[] fetFriendName;


        List<String> arrayList;

        List<String> mOriginalValues;

    

    LayoutInflater mInflater = null;

        EscolhaAmigosFacebook friendsList;

   

        FriendListAdapter(EscolhaAmigosFacebook friendsList, String[] stringName, ArrayList<String> arrayName) {

        this.friendsList = friendsList;

            if (Utility.model == null) {

                Utility.model = new FriendsGetProfilePics();

            }

            Utility.model.setListener(this);

            

            fetFriendName = stringName;

            

            arrayList = new ArrayList<String>();

            mOriginalValues = arrayName;


            mInflater = LayoutInflater.from(friendsList.getBaseContext());

            

        }


        @Override

        public int getCount() {

            return mOriginalValues.size();

        }


        @Override

        public Object getItem(int position) {

        return mOriginalValues.get(position);

        }


        @Override

        public long getItemId(int position) {

            return position;

        }


        @Override

        public View getView(final int position, View convertView, ViewGroup parent) {

            JSONObject jsonObject = null;

            final ViewHolder holder;

            View vi = convertView;

            

            try {

                jsonObject = jsonArray.getJSONObject(position);

            } catch (JSONException e1) {

                // TODO Auto-generated catch block

                e1.printStackTrace();

            }


            if (vi == null) {

            

            vi = mInflater.inflate(R.layout.friend_item, null);

            holder = new ViewHolder();

                holder.profile_pic = (ImageView) vi.findViewById(R.id.profile_pic);

                

                TextView txtFriendsName = (TextView)vi.findViewById(R.id.name);

                txtFriendsName.setText(fetFriendName[position]);

                vi.setTag(holder);

            }else{

            holder = (ViewHolder) vi.getTag();

            }

            

            try {

                holder.profile_pic.setImageBitmap(Utility.model.getImage(

                jsonObject.getString("id"), jsonObject.getString("picture")));

            } catch (JSONException e) {

            holder.name.setText("");

            }

        return vi;

           }

        

        


@Override

public Filter getFilter() {

Filter filter = new Filter(){


@SuppressWarnings("unchecked")

            @Override

            protected void publishResults(CharSequence constraint, FilterResults results) {

                arrayList = (List<String>) results.values;

                notifyDataSetChanged();

            }

@Override

            protected FilterResults performFiltering(CharSequence constraint) {


                FilterResults results = new FilterResults();

                List<String> FilteredArrList = new ArrayList<String>();


                if (constraint == null || constraint.length() == 0) {

                    results.count = mOriginalValues.size();

                    results.values = mOriginalValues;

                } else {

                    constraint = constraint.toString();


                    for (int i = 0; i < mOriginalValues.size(); i++) {

                        String data = mOriginalValues.get(i);

                        if (data.toLowerCase().startsWith(constraint.toString()))   {

                            FilteredArrList.add(data);

                        }

                    }


                    results.count = FilteredArrList.size();

                    results.values = FilteredArrList;

                }


                return results;

            }

};

return filter;

}

        

    }


private TextWatcher filterTextWatcher = new TextWatcher() {


        @Override

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

        adapter.getFilter().filter(s.toString());

        }


        @Override

        public void beforeTextChanged(CharSequence s, int start, int count,

                int after) {

            // TODO Auto-generated method stub


        }


        @Override

        public void afterTextChanged(Editable s) {

            // TODO Auto-generated method stub


        }

    };


isso Está no meu metodo onComplete

        et_search = (EditText) findViewById(R.id.et_Search);

        et_search.addTextChangedListener(filterTextWatcher);



Não estou achando solução, simplesmente quando digito alguma coisa no meu textview, não acontece nada na listview, tipo não filtra... 

Se alguém também souber o que devo fazer para ver onde possa estar o erro, por favor..

Se Alguém puder me ajudar! 


  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

0 comentários:

Postar um comentário