Java 适配器getFilter未进行筛选

Java 适配器getFilter未进行筛选,java,android,Java,Android,我在这一点上不知所措,在读了几篇帖子后,我仍然不知道如何处理我目前的处境。但是,当我过滤光标适配器时,列表不会更新或过滤任何内容,就像什么都没有发生一样 下面是我查看客户列表的活动 public class ViewClientActivity extends Activity { EditText inputSearch; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanc

我在这一点上不知所措,在读了几篇帖子后,我仍然不知道如何处理我目前的处境。但是,当我过滤光标适配器时,列表不会更新或过滤任何内容,就像什么都没有发生一样

下面是我查看客户列表的活动

public class ViewClientActivity extends Activity
{

EditText inputSearch;

protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.viewclient_activity);

    inputSearch = (EditText) findViewById(R.id.search_view);

    DBHandler handler = new DBHandler(this, null, null, 1);
    SQLiteDatabase db = handler.getReadableDatabase();
    final Cursor ClientCursor = db.rawQuery("SELECT  * FROM clients", null);
    final ListView allClients = (ListView) findViewById(R.id.allClients);
    final ClientCursorAdapter clientAdapter = new ClientCursorAdapter(this, ClientCursor);

    allClients.setAdapter(clientAdapter);



    allClients.setOnItemClickListener(new AdapterView.OnItemClickListener()
    {
        public void onItemClick(AdapterView<?> parent, View view, int position, long id)
        {
            Cursor cur = (Cursor) parent.getItemAtPosition(position);
            int clientIdint = cur.getInt(cur.getColumnIndex("_id"));
            String clientId = Integer.toString(clientIdint);
            Intent AddClientIntent = new Intent(getApplicationContext(), AddClientActivity.class);
            AddClientIntent.putExtra("CLIENT_IDINT", clientIdint);
            AddClientIntent.putExtra("CLIENT_ID", clientId);
            startActivity(AddClientIntent);
        }
    });

    inputSearch.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3)
        {
            // When user changed the Text
            clientAdapter.getFilter().filter(cs.toString());
            allClients.setAdapter(clientAdapter);
        }

        @Override
        public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
                                      int arg3) {
            // TODO Auto-generated method stub

        }

        @Override
        public void afterTextChanged(Editable arg0) {
            // TODO Auto-generated method stub
        }
    });

}
}

谢谢您的时间,如果您需要任何其他信息,请告诉我

要过滤
CursorAdapter
SimpleCursorAdapter
您必须使用
clientAdapter.setFilterQueryProvider
才能过滤内容

  clientAdapter .setFilterQueryProvider(new FilterQueryProvider() {
   public Cursor runQuery(CharSequence constraint) {
  //your code here
    }

 });
有关更详细的说明,请参见此处:
另外,您不必两次安装适配器,只需删除
allClients.setAdapter(clientAdapter)
addTextChangedListener
方法。如果需要,您可以调用
notifyDataSetChanged()

要过滤
光标适配器
简单光标适配器
您必须使用
客户端适配器。setFilterQueryProvider
才能过滤内容

  clientAdapter .setFilterQueryProvider(new FilterQueryProvider() {
   public Cursor runQuery(CharSequence constraint) {
  //your code here
    }

 });
有关更详细的说明,请参见此处:
另外,您不必两次安装适配器,只需删除
allClients.setAdapter(clientAdapter)
addTextChangedListener
方法。如果需要,您可以调用
notifyDataSetChanged()

addTextChangedListener
不能直接使用
CursorAdapter
所以我必须制作一个新的适配器?
addTextChangedListener
不能直接使用
CursorAdapter
所以我必须制作一个新的适配器?这仍然会在onTextChanged方法中正确吗?感谢您的帮助。我还没有让它运行,但这是我需要做的!这仍然会进入ContextChanged方法中,对吗?谢谢您的帮助。我还没有让它运行,但这是我需要做的!