2012-06-26 4 views
0

Я хочу получить конкатенты в спискеView, и я хочу слишком повторно использовать один код SocialAuth. В этом коде я могу получить ContactList в LogCat, но не в спискеView, и я не знаю, как это сделать. Этот listView относится к другому XML.Показать контакты в ListView Android

Я выпучив и больше, но я не знаю, как адаптировать код

public void Events(String provider) { 

    setContentView(R.layout.contact_list); 

    List <Contact> contactsList = adapter.getContactList(); 




    if (contactsList != null && contactsList.size() > 0) { 
     for (Contact p: contactsList) { 

      if (TextUtils.isEmpty(p.getFirstName()) && TextUtils.isEmpty(p.getLastName())) { 
       p.setFirstName(p.getDisplayName()); 
      } 

      Log.d("Custom-UI", "Display Name = " + p.getDisplayName()); 
      String ContactNAme = p.getDisplayName(); 
      //ContactName = new String[] {p.getDisplayName()}; 
      //mapTo = new int[] {android.R.id.text1}; 
      Log.d("Custom-UI", "First Name = " + p.getFirstName()); 
      String ContactFisrtName = p.getFirstName(); 
      Log.d("Custom-UI", "Last Name = " + p.getLastName()); 
      String ContactLastName = p.getLastName(); 
      Log.d("Custom-UI", "Contact ID = " + p.getId()); 
      String ContactId = p.getId(); 
      Log.d("Custom-UI", "Profile URL = " + p.getProfileUrl()); 
      String ContactProfileUrl = p.getProfileUrl(); 

     } 
     // Log.d("ContactList",mAdapter.toString()); 
    } 
    Toast.makeText(CustomUI.this, "View Logcat for Contacts Information", Toast.LENGTH_SHORT).show(); 


} 

Я думаю, что проблема курсор, потому что у меня нет никого, у меня есть эта функция, я думаю, что работает любит курсор

public List<Contact> getContactList() 
{ 
    try 
    { 
     contactsList = new contactTask().execute().get(); 
    } 
    catch (InterruptedException e) 
    { 
     e.printStackTrace(); 
    } 
    catch (ExecutionException e) 
    { 
     e.printStackTrace(); 
    } 

    return contactsList; 
} 

Так что если кто-то может мне помочь, спасибо.

+0

столб ListView код, и если какие-либо ошибки, то журналы –

+0

у меня нет никакого кода ListView, я могу поймать contactsList и поставить в ListView? – user1459089

ответ

0

Пожалуйста, смотрите на ссылке ниже

http://developer.android.com/tools/samples/index.html

Это оказывает пример выборки в Android SDK. где вы можете получить желаемый результат.

+0

Я следую вашим instrusccions, и я utlitzate ContactMAnager.java, но у меня нет никакого результата успеха. У меня ошибка NullPointerExecption. Могу ли я поймать возвращение списка ? спасибо – user1459089

0

Вам необходимо написать пользовательский адаптер для просмотра списка.

здесь является хорошим примером

http://android.vexedlogic.com/2011/04/02/android-lists-listactivity-and-listview-ii-%E2%80%93-custom-adapter-and-list-item-view/

+0

Мой вопрос еще не разрешен, могу ли я утилизировать Список для listView? – user1459089

0
// Call contact thread 

    contact_thread = new Contact_thread(); 
     contact_thread.start(); 

private Cursor getContacts() { 
    // Run query 
    Uri uri = ContactsContract.Contacts.CONTENT_URI; 
    String[] projection = new String[] { ContactsContract.Contacts._ID, 
      ContactsContract.Contacts.DISPLAY_NAME }; 
    String[] selectionArgs = null; 
    String sortOrder = ContactsContract.Contacts.DISPLAY_NAME 
      + " COLLATE LOCALIZED ASC"; 

    return managedQuery(uri, projection, null, selectionArgs, sortOrder); 
} 

class Contact_thread extends Thread { 

    @Override 
    public void run() { 
     // TODO Auto-generated method stub 
     // Build adapter with contact entries 
     Cursor cursor = getContacts(); 

     cursor.moveToFirst(); 
     contactName = new String[cursor.getCount()]; 
     contactNo = new String[cursor.getCount()]; 
     checkedPosition = new boolean[cursor.getCount()]; 



     ContentResolver contect_resolver = getContentResolver(); 
     int i = 0; 
     if (cursor.getCount() > 0) { 
      do { 
       String id = cursor 
         .getString(cursor 
           .getColumnIndexOrThrow(ContactsContract.Contacts._ID)); 

       Cursor phoneCur = contect_resolver.query(
         ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
         null, 
         ContactsContract.CommonDataKinds.Phone.CONTACT_ID 
           + " = ?", new String[] { id }, null); 
       if (phoneCur.moveToFirst()) { 
        contactName[i] = phoneCur 
          .getString(phoneCur 
            .getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)); 
        contactNo[i] = phoneCur 
          .getString(phoneCur 
            .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 

        if (contactName[i] == null) { 
         contactName[i] = "Unknown"; 
        } 

       } else { 
        contactName[i] = "Unknown"; 
        contactNo[i] = ""; 
       } 

       db.AddContact(contactName[i], contactNo[i]); 

       i++; 
       phoneCur.close(); 
      } while (cursor.moveToNext()); 


     } 
     cursor.close(); 
     runOnUiThread(new Runnable() { 

      @Override 
      public void run() { 
       // TODO Auto-generated method stub 
       // mContactList.setAdapter(cursorAdapter); 

       mContactList.setAdapter(new ContactAdapter(
         ContactManager.this, R.layout.contact_entry)); 


      } 
     }); 
    } 
} 

private class ContactAdapter extends ArrayAdapter<String> implements 
     Filterable { 

    public ContactAdapter(Context context, int textViewResourceId) { 
     super(context, textViewResourceId); 
     // TODO Auto-generated constructor stub 
    } 

    public int getCount() { 
     return contactName.length; 
    } 

    public String getItem(int position) { 
     return contactName[position]; 
    } 

    public long getItemId(int position) { 
     return position; 
    } 

    public View getView(int position, View convertView, ViewGroup parent) { 

     View v; 
     if (convertView == null) { 
      LayoutInflater li = getLayoutInflater(); 
      v = li.inflate(R.layout.contact_entry, null); 
     } else { 
      v = convertView; 
     } 
     CheckedTextView text = (CheckedTextView) v.findViewById(R.id.text1); 
     text.setText(contactName[position] + " (" + contactNo[position] 
       + ") "); 
     text.setChecked(checkedPosition[position]); 
     return v; 
    } 

} 

contact_entry.xml

<?xml version="1.0" encoding="utf-8"?> 
    <CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/text1" 
     android:layout_width="fill_parent" 
     android:layout_height="?android:attr/listPreferredItemHeight" 
     android:background="#AA0114" 
     android:checkMark="?android:attr/listChoiceIndicatorMultiple" 
     android:gravity="center_vertical" 
     android:paddingLeft="6dip" 
     android:paddingRight="6dip" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:textStyle="bold" /> 
Смежные вопросы