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 回答