2012-08-10 98 views
0

您好,我的應用程序中有一個自動完成文本視圖。該iam提取存儲在手機中的聯繫人。問題是我可以從autocompletetextview中只選擇一個聯繫人,但是我想選擇多個聯繫人並且必須像android中的消息應用程序一樣在autocompletetextview中顯示它。如何執行此操作?如何在自動完成文本視圖中選擇多個聯繫人

蔭使用以下代碼:

@Override 
    public void afterTextChanged(Editable arg0) { 

    } 

    @Override 
    public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, 
      int arg3) { 

    } 

    @Override 
    public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) { 

     Cursor c = getContentResolver().query(Phone.CONTENT_URI, 
       PHONE_PROJECTION, null, null, null); 
     startManagingCursor(c); 

     ContactListAdapter adapter = new ContactListAdapter(this, R.layout.row, 
       c, 
       new String[] { Phone.DISPLAY_NAME, Phone.TYPE, Phone.NUMBER }, 
       new int[] { R.id.textName, R.id.textType, R.id.textPhone }); 

     adapter.setViewBinder(new SimpleCursorAdapter.ViewBinder() { 

      @Override 
      public boolean setViewValue(View view, Cursor cursor, 
        int columnIndex) { 
       if (columnIndex != 2) { 
        return false; 
       } 

       int type = cursor.getInt(2); 

       if (type == Phone.TYPE_CUSTOM) { 
        cursor.getString(3); 
       } 

       String text = (String) Phone.getTypeLabel(getResources(), type, 
         null); 

       ((TextView) view).setText(text); 

       return true; 
      } 
     }); 
     autoTo.setAdapter(adapter); 
    } 

    private static class ContactListAdapter extends SimpleCursorAdapter { 

     public static ContentResolver mContent; 

     public ContactListAdapter(Context context, int layout, Cursor c, 
       String[] from, int[] to) { 

      super(context, layout, c, from, to); 
      mContent = context.getContentResolver(); 
     } 

     @Override 
     public CharSequence convertToString(Cursor cursor) { 
      int namCol = cursor.getColumnIndexOrThrow(Phone.DISPLAY_NAME); 
      int numCol = cursor.getColumnIndex(Phone.NUMBER); 

      return cursor.getString(namCol) + " <" + cursor.getString(numCol) 
        + ">"; 
     } 

     @Override 
     public Cursor runQueryOnBackgroundThread(CharSequence constraint) { 
      FilterQueryProvider filter = getFilterQueryProvider(); 

      if (filter != null) { 
       return filter.runQuery(constraint); 
      } 

      Uri uri = Uri.withAppendedPath(Phone.CONTENT_FILTER_URI, 
        Uri.encode(constraint.toString())); 
      return mContent.query(uri, PHONE_PROJECTION, null, null, null); 
     } 
    } 
+0

我正在做類似的事情! http://stackoverflow.com/questions/12854336/autocompletetextview-backed-by-cursorloader – toobsco42 2012-10-30 19:45:51

回答

2

代替寫入邏輯用於使用列表視圖中選擇多個聯繫人,我們可以簡單地使用MultipleAutoCompleteTextView .The代碼是作爲用於autocompletetextview。通過這一點,我們可以選擇爲相同多個聯繫人。

謝謝

+0

謝謝!你的意思是:http://developer.android.com/reference/android/widget/MultiAutoCompleteTextView.html – bentzy 2013-12-01 09:30:55

相關問題