title: Filtering ListView with custom (object) adapter
body: <p>I'm trying to implement filtering of a ListView which is uses a custom object adapter, but I can't find any useful samples. The included code is very simplified, so no- keep in mind I can't use an regular ArrayAdapter.
  I have a EditText above the ListView, and when the user enters text in the EditText widget I would like to filter the ListView by the text written in the EditText.
  Any suggestions would be much appreciated!</p>
  
  <p>Here is the snippet from the activity class:</p>
  
  <pre><code>public class management_objects extends Activity {
  
  private static List&lt;User&gt; UserList;
  private EfficientAdapter adapter = null;
  private ListView objectListView = null;
  private EditText SearchText = null;
  
  private static class EfficientAdapter extends BaseAdapter implements Filterable{
      private LayoutInflater mInflater;   
  
      public EfficientAdapter(Context context) {
          mInflater = LayoutInflater.from(context);
      }
  
      public int getCount() {
          return UserList.size();
      }
  
      public Object getItem(int position) {
          return position;
      }
  
      public long getItemId(int position) {
          return position;
      }
  
      public View getView(int position, View convertView, ViewGroup parent) {
          ViewHolder holder; 
          if (convertView == null) { 
              convertView = mInflater.inflate(R.layout.imagelayout_2lines, null);
              holder = new ViewHolder();
              holder.text = (TextView) convertView.findViewById(R.id.managementObjectText);
              holder.subtext = (TextView) convertView.findViewById(R.id.managementObjectSubText);
              holder.icon = (ImageView) convertView.findViewById(R.id.managementObjectIcon);
              convertView.setTag(holder);
          }
          else {
              holder = (ViewHolder) convertView.getTag();
          }
  
          holder.text.setText(UserList.get(position).getFirstName());
          holder.subtext.setText(UserList.get(position).getLastName());
          holder.icon.setImageResource(R.drawable.user);
  
          return convertView;
      }
  
      static class ViewHolder { 
          TextView text;
          TextView subtext;
          ImageView icon;
      }
  
      @Override
      public Filter getFilter() {
          return null;
      }
  }
  
  @Override
  public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.adobjectlist);
      Bundle extras = getIntent().getExtras();
  
      SearchText = (EditText) findViewById(R.id.SearchBox);    
      SearchText.addTextChangedListener(filterTextWatcher);
  
      objectListView = (ListView) findViewById(R.id.ObjectList);
      objectListView.setOnItemClickListener(Item_Click);
      adapter = new EfficientAdapter(this);
      ComputerName = extras.getString("COMPUTER_NAME");
  
      //Get User list from webservice
      ShowUsers();
  }
  </code></pre>
  
  <p>Here is The User class:</p>
  
  <pre><code> public class User {
    private int UserId;
    private String FirstName;
    private String LastName;
  
      public int getUserId() {
          return UserId;
      }
      public void setUserId(int UserId) {
          this.UserId = UserId;
      }
      public String getFirstName() {
          return FirstName;
      }
      public void setFirstName(String FirstName) {
          this.FirstName = FirstName;
      }
      public String getLastName() {
          return LastName;
      }
      public void setLastName(String LastName) {
          this.LastName = LastName;
      }
  }
  </code></pre>