1

EditText を使用して、別のリストビューで検索機能を実行する必要があります。私は edittext.addTextChangedListener() メソッドを使用し、解決策を得ました。しかし、EditText ボックスは 1 文字しか受け付けません。2 番目の文字を入力しようとすると、強制的に閉じられます。

次のコードを使用しました。

edtSearch.addTextChangedListener(new TextWatcher() {
    public void afterTextChanged(Editable s) {
        // Abstract Method of TextWatcher Interface.
    }

    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
        // Abstract Method of TextWatcher Interface.
    }

    public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) {
        // TODO Auto-generated method stub
        sAdapter.clear();
        textlength = edtSearch.getText().length();   //getting text from EditText
        Log.e("textlength",""+textlength);
        array_name.clear(); array_friendid.clear(); array_status.clear(); array_image.clear();array_thumb.clear();

        for (int i = 0; i < fullname.length; i++) {
            if (textlength <= fullname[i].length()) {
                if(edtSearch.getText().toString().equalsIgnoreCase((String)fullname[i].subSequence(0,textlength))) {
                    Log.e("arrayname",fullname[i]);

                    array_name.add(fullname[i]);       

                    array_friendid.add(friendid[i]);
                    array_status.add(status[i]);
                    array_image.add(imageurl[i]);
                    array_thumb.add(thumbnailurl[i]);
                    array_header.add(fullname[i].substring(0, 1));
                }
            }
        }
4

2 に答える 2

0

下にコントロールを置くことができます。

if(textlength > 3) 
for (int i = 0; i < fullname.length; i++)
        {
于 2012-11-27T08:00:45.313 に答える
0

Filter クラスを利用して、目的を達成できると思います。リスト アダプタの getFilter() メソッドをオーバーライドするだけです。サンプルコードは次のとおりです。

@Override
    public Filter getFilter() {

        if(mFilter == null){
            mFilter = new Filter() {

        @Override
        protected FilterResults performFiltering(CharSequence constraint) {                
            FilterResults filterResults;

            //Do your search and initialize filterResults
              ...

            return filterResults;
        }

        @Override
        protected void publishResults(CharSequence constraint, FilterResults results) {

            if(results != null && results.values != null) {

              notifyDataSetChanged();
          }                    
        }
      };
    }

    return mFilter;
}

Filterクラスの利点は、別のスレッドでフィルタリングを実行することです。

于 2012-11-27T08:17:26.273 に答える