1

有一個微調器使用來自設備的聯繫人進行填充。llegalStateException:無法將光標移動到位置

Cursor contactsCursor = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, {ContactsContract.Contacts._ID, ContactsContract.Contacts.DISPLAY_NAME}, ContactsContract.Contacts.HAS_PHONE_NUMBER +" = "+ HAS_PHONE_NUMBER_STATE, null, ContactsContract.Contacts.DISPLAY_NAME +" ASC"); 

SimpleCursorAdapter sca = new SimpleCursorAdapter(getActivity(), android.R.layout.simple_spinner_item, contactsCursor, new String[] { ContactsContract.Contacts.DISPLAY_NAME }, new int[] {android.R.id.text1}); 

contactsSpinner.setAdapter(sca); 

當我嘗試這樣設置sellection

String contactId = getContactSelectedId();  
if(null != contactId) { 
    contactsSpinner.setSelection(Integer.valueOf(contactId)); 
} 

升起一個例外:

llegalStateException: couldn't move cursor to position x 

堆棧跟蹤

07-31 01:07:08.854: E/AndroidRuntime(22745): FATAL EXCEPTION: main 
07-31 01:07:08.854: E/AndroidRuntime(22745): java.lang.IllegalStateException: couldn't move cursor to position 1136 
07-31 01:07:08.854: E/AndroidRuntime(22745): at android.support.v4.widget.CursorAdapter.getView(CursorAdapter.java:248) 
07-31 01:07:08.854: E/AndroidRuntime(22745): at android.widget.Spinner.makeAndAddView(Spinner.java:544) 
07-31 01:07:08.854: E/AndroidRuntime(22745): at android.widget.Spinner.layout(Spinner.java:495) 
07-31 01:07:08.854: E/AndroidRuntime(22745): at android.widget.Spinner.onLayout(Spinner.java:459) 
07-31 01:07:08.854: E/AndroidRuntime(22745): at android.view.View.layout(View.java:14055) 
07-31 01:07:08.854: E/AndroidRuntime(22745): at android.view.ViewGroup.layout(ViewGroup.java:4604) 
07-31 01:07:08.854: E/AndroidRuntime(22745): at android.widget.RelativeLayout.onLayout(RelativeLayout.java:948) 
07-31 01:07:08.854: E/AndroidRuntime(22745): at android.view.View.layout(View.java:14055) 

我怎樣才能解決這個PR oblem?

+0

此代碼適用於我。檢查什麼返回'getContactSelectedId'。它應該返回不是Id而是索引。 – aim

回答

4

setSelection(int position)功能以位置作爲參數,
但您給功能所選項目的ID。

您需要創建一個函數getContactSelectedPosition()或類似的東西。 此功能將(可能)循環訪問適配器的數據,然後返回匹配聯繫人的位置。