1

私はこの問題に3日間取り組んできましたが、どこにも行けません。

わかりました、私は編集テキストボックスを持っています、

     <EditText
     android:id="@+id/inputSearch"
     android:layout_width="match_parent"
     android:layout_height="0dp"
     android:inputType="textNoSuggestions"
     android:hint="Search contacts...."
     android:visibility="invisible"
     android:singleLine="true" 
    />

ListView の上部 ( https://github.com/woozzu/IndexableListView )

  <com.mb.contactlist.IndexableListView
        android:id="@+id/tab_contact_list"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:divider="@color/d_gray"
        android:dividerHeight="1dp"
        android:fastScrollEnabled="true"
        android:focusable="true"
        android:longClickable="true"
        android:paddingLeft="10dp"
        android:paddingRight="30dp" >
    </com.mb.contactlist.IndexableListView>

単純なので、私の CursorAdapter は SectionIndexer、Filterable を実装しています

 @Override
    public Cursor runQueryOnBackgroundThread(CharSequence constraint) 
   {
        Log.d(""," Cursor chars = " + constraint);
        StringBuilder buffer = null;
        String[] args = null;
        if (constraint != null) 
        {
            //Activity activity = (Activity) iContext;
            buffer = new StringBuilder();
            buffer.append(ContactsContract.Contacts.HAS_PHONE_NUMBER + " > 0 AND ");
            buffer.append(ContactsContract.Contacts.IN_VISIBLE_GROUP + " == 1 AND ");
            buffer.append("UPPER( " + ContactsContract.Contacts.DISPLAY_NAME + ")");
            buffer.append(" like ? ");
            args = new String[]{"%" + constraint.toString().toUpperCase() + "%"};

            Cursor c  = iContext.getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, 
                null, 
                buffer.toString(), 
                args, 
                "UPPER(" + ContactsContract.Contacts.DISPLAY_NAME + ") ASC");

            Log.d(""," Cursor count = " + c.getCount());
            return c; 
        }
        Log.d(""," returning null");
        return null;  
    }

上記は私のフィルタークエリです...だから今までは大丈夫です...

inputSearch = (EditText) root.findViewById(R.id.inputSearch); // 検索 // テキスト

inputSearch.addTextChangedListener(new TextWatcher() 
{
    public void afterTextChanged(Editable s) 
    {
            lst.setTextFilterEnabled(true);
            lst.setFilterText(s.toString());                
    }
     }

だから私がやりたいのは、誰かがリストビューで連絡先を検索できるようにすることだけです。名前を入力し忘れてバックスペースキーを押したくなるまで、最初の削除コマンドが機能し、それで終わりです。編集テキストからこれ以上文字を削除することはできません...

私は何を間違っていますか?何か案は?

4

1 に答える 1

0

私はmagictextviewを使用していましたが、これがこの問題の原因でした。

于 2013-06-01T18:25:48.653 に答える