2010-12-02 16 views
1

我正在爲聯繫人列表創建多選佈局。我成功地選擇了聯繫人。但是,不是在文本視圖中顯示聯繫人姓名,而是顯示爲字符串值。我只想讓聯繫人名稱顯示在TextView中,而不是字符串值。爲什麼選定的聯繫人不會出現在文本視圖中?

我有2個班。一類是挑選聯繫人。而另一個班則用於瀏覽和選擇聯繫人。

選定聯繫人活動

package com.droidnova.android.samples; 

import android.app.Activity; 
    import android.content.Intent; 
    import android.database.Cursor; 
    import android.os.Bundle; 
    import android.provider.Contacts.People; 
    import android.provider.ContactsContract.Contacts; 
    import android.view.View; 
    import android.widget.Button; 


    public class SelectContact extends Activity { 
private static final int PICK_CONTACT = 0; 
private Button btnPick; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.button); 

     btnPick = (Button)findViewById(R.id.button); 
     btnPick.setOnClickListener(new MyOnClickListener()); 


    } 
    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     if (requestCode == PICK_CONTACT) { 
      if (resultCode == RESULT_OK) { 
       Cursor contact = getContentResolver().query(data.getData(), null, null, null, null); 
       contact.moveToFirst(); 
       String name = contact.getString(contact.getColumnIndexOrThrow(People.NAME)); 


     } 

    } 
     } 
    private class MyOnClickListener implements View.OnClickListener { 
    @Override 
    public void onClick(View v) { 
     startActivityForResult(new Intent(Intent.ACTION_PICK),PICK_CONTACT); 
    } 
    } 
} 

聯繫人活動

package com.droidnova.android.samples; 

import java.util.ArrayList; 
import java.util.List; 
import java.util.zip.Inflater; 
import android.app.ListActivity; 
import android.content.Context; 
import android.content.Intent; 
import android.content.DialogInterface.OnClickListener; 
import android.database.Cursor; 
import android.os.Bundle; 
import android.provider.Contacts.People; 
import android.util.Log; 
import android.util.SparseBooleanArray; 
import android.view.View; 
import android.widget.Adapter; 
import android.widget.ArrayAdapter; 
import android.widget.EditText; 
import android.widget.ListAdapter; 
import android.widget.ListView; 
import android.widget.SimpleCursorAdapter; 
import android.widget.TextView; 

public class Contacts extends ListActivity { 
ListView list; 
TextView Selection; 



private static String[] PROJECTION = new String[] 
{ 
    People._ID, 
    People.NAME, 
    People.NUMBER, 
}; 

    @Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    list=(ListView)findViewById(android.R.id.list); 
    Cursor cursor = getContentResolver().query(People.CONTENT_URI, 
      PROJECTION, null, null, null); 
    startManagingCursor(cursor); 

    ListAdapter adapter = new SimpleCursorAdapter(this,android.R.layout.simple_list_item_multiple_choice, 
      cursor,new String[]{People.NAME},new int[]{android.R.id.text1}); 

    getListView().setChoiceMode(2); 
    setListAdapter(adapter); 
    Selection = (TextView)findViewById(R.id.selection); 
    } 
    @Override 

    protected void onListItemClick(ListView parent,View v,int position,long id){ 
    Selection.setText(""); 
    SparseBooleanArray chosen = parent.getCheckedItemPositions(); 
    for(int i=0;i<chosen.size();i++) 
    { 
      Log.d("Selection", "index:"+i+";key:"+chosen.keyAt(i) +";value:"+chosen.valueAt(i) 
        +";"+PROJECTION[chosen.keyAt(i)]); 

      if(chosen.valueAt(i)){ 
       Selection.append(PROJECTION[chosen.keyAt(i)]+""); 
      } 

     } 
    } 

}


這是我的logcat:

12-02 03:10:49.840: INFO/ActivityManager(53): Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.droidnova.android.samples/.SelectContact } 
12-02 03:10:49.930: INFO/ActivityManager(53): Start proc com.droidnova.android.samples for activity com.droidnova.android.samples/.SelectContact: pid=715 uid=10025 gids={1015} 
12-02 03:10:49.930: DEBUG/AndroidRuntime(709): Shutting down VM 
12-02 03:10:49.930: DEBUG/dalvikvm(709): DestroyJavaVM waiting for non-daemon threads to exit 
12-02 03:10:49.940: DEBUG/dalvikvm(709): DestroyJavaVM shutting VM down 
12-02 03:10:49.940: DEBUG/dalvikvm(709): HeapWorker thread shutting down 
12-02 03:10:49.940: DEBUG/dalvikvm(709): HeapWorker thread has shut down 
12-02 03:10:49.940: DEBUG/jdwp(709): JDWP shutting down net... 
12-02 03:10:49.940: INFO/dalvikvm(709): Debugger has detached; object registry had 1 entries 
12-02 03:10:49.960: DEBUG/dalvikvm(709): VM cleaning up 
12-02 03:10:49.990: ERROR/AndroidRuntime(709): ERROR: thread attach failed 
12-02 03:10:50.030: DEBUG/dalvikvm(709): LinearAlloc 0x0 used 639500 of 5242880 (12%) 
12-02 03:10:50.230: DEBUG/ddm-heap(715): Got feature list request 
12-02 03:10:50.910: INFO/ActivityManager(53): Displayed activity com.droidnova.android.samples/.SelectContact: 1000 ms (total 1000 ms) 
12-02 03:10:51.921: INFO/ActivityManager(53): Starting activity: Intent { act=android.intent.action.PICK cmp=com.droidnova.android.samples/.Contacts } 
12-02 03:10:52.441: INFO/ActivityManager(53): Displayed activity com.droidnova.android.samples/.Contacts: 431 ms (total 431 ms) 
12-02 03:10:53.521: DEBUG/Selection(715): index:0;key:0;value:true;_id 
12-02 03:10:54.391: DEBUG/Selection(715): index:0;key:0;value:true;_id 
12-02 03:10:54.391: DEBUG/Selection(715): index:1;key:1;value:true;name 
12-02 03:10:54.841: DEBUG/Selection(715): index:0;key:0;value:true;_id 
12-02 03:10:54.851: DEBUG/Selection(715): index:1;key:1;value:true;name 
12-02 03:10:54.851: DEBUG/Selection(715): index:2;key:2;value:true;number 
12-02 03:10:57.531: DEBUG/dalvikvm(220): GC freed 43 objects/2024 bytes in 77ms 
12-02 03:11:24.040: DEBUG/Selection(715): index:0;key:0;value:false;_id 
12-02 03:11:24.040: DEBUG/Selection(715): index:1;key:1;value:true;name 
12-02 03:11:24.050: DEBUG/Selection(715): index:2;key:2;value:true;number 
12-02 03:11:25.120: DEBUG/Selection(715): index:0;key:0;value:false;_id 
12-02 03:11:25.120: DEBUG/Selection(715): index:1;key:1;value:false;name 
12-02 03:11:25.130: DEBUG/Selection(715): index:2;key:2;value:true;number 
12-02 03:11:25.670: DEBUG/Selection(715): index:0;key:0;value:false;_id 
12-02 03:11:25.680: DEBUG/Selection(715): index:1;key:1;value:false;name 
12-02 03:11:25.680: DEBUG/Selection(715): index:2;key:2;value:false;number 
12-02 03:11:26.641: DEBUG/Selection(715): index:0;key:0;value:true;_id 
12-02 03:11:26.641: DEBUG/Selection(715): index:1;key:1;value:false;name 
12-02 03:11:26.651: DEBUG/Selection(715): index:2;key:2;value:false;number 
12-02 03:11:27.171: DEBUG/Selection(715): index:0;key:0;value:true;_id 
12-02 03:11:27.181: DEBUG/Selection(715): index:1;key:1;value:true;name 
12-02 03:11:27.181: DEBUG/Selection(715): index:2;key:2;value:false;number 
12-02 03:49:00.191: DEBUG/dalvikvm(53): GC freed 17933 objects/880976 bytes in 150ms 
12-02 04:22:34.131: DEBUG/dalvikvm(102): GC freed 11675 objects/524064 bytes in 81ms 
12-02 04:38:00.181: DEBUG/dalvikvm(53): GC freed 20167 objects/943152 bytes in 147ms 
+0

詳情什麼ü由「字符串值」在這裏..意思是如果你能證明logcat的O/P會有助於幫助你。 – 2010-12-02 04:56:50

回答

0

試試這個..我使用此代碼獲取電子郵件和姓名從聯繫人。使用此代碼按您的要求

@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) 
    {   


        if (resultCode == RESULT_OK) 
        { 
         if(requestCode==CONTACT_PICKER_EMAIL) 
         { 
          Cursor cursor = null; 
          String email = ""; 
          try 
          { 
           Uri result = data.getData(); 
           Log.v(DEBUG_TAG, "Got a contact result: " 
             + result.toString()); 

           // get the contact id from the Uri 
           String id = result.getLastPathSegment(); 

           // query for everything email 
           cursor = getContentResolver().query(Email.CONTENT_URI, 
             null, Email.CONTACT_ID + "=?", new String[] { id }, 
             null); 

           int emailIdx = cursor.getColumnIndex(Email.DATA); 

           // let's just get the first email 
           if (cursor.moveToFirst()) 
           { 
            email = cursor.getString(emailIdx);         
            txtconfirmBy.setText(email); 
           } 
           else 
           { 
            Log.w(DEBUG_TAG, "No results"); 
           } 
          } 
          catch (Exception e) 
          { 
           Log.e(DEBUG_TAG, "Failed to get email data", e); 
          } 
          finally 
          { 
           if (cursor != null) 
           { 
            cursor.close(); 
           }      

          }  

         } 
         else if (requestCode==CONTACT_PICKER_NAME) 
         { 
          Uri contactData = data.getData(); 
          Cursor c = managedQuery(contactData, null, null, null, null); 
          if (c.moveToFirst()) 
          {      
           String name = c.getString(c.getColumnIndexOrThrow(People.DISPLAY_NAME)); 
           txtparticipant.setText(name);   

          }  
        } 

        } 




    } 

發送請求得到這樣

Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI); 
      startActivityForResult(intent, CONTACT_PICKER_EMAIL); 

Intent intent = new Intent(Intent.ACTION_PICK,ContactsContract.Contacts.CONTENT_URI);   
      startActivityForResult(intent,CONTACT_PICKER_NAME); 
相關問題