2014-09-24 2 views
1

Я разрабатываю это приложение для контактов. До сих пор я создал ListView, у которого есть имя контакта и номер телефона. Когда вы нажимаете на контакт, он начинает новую активность и показывает имя контакта и номер телефона.Данные Android в ListView

Что я хочу сделать, так это то, что в ListView у меня есть только имена контактов, и когда вы нажимаете на контакт в списке, начинается действие, и вы можете видеть как имя, так и номер.

Я думал, может быть, я могу скрыть часть информации в ListView, но я не нашел ничего хорошего в этом.

У кого-нибудь есть предложения?

Заранее спасибо.

+0

Не уверен, что вы спрашиваете - «Когда вы нажимаете на контакт, он начинает новую деятельность и показывает имя контакта и номер телефона». ужасно похоже на «когда вы нажимаете на контакт в списке, тогда начинается действие, и вы можете видеть как имя, так и номер». –

+0

okei извините, я был немного неясен, что я был первым, когда запускалась программа. Он показывает список контактов, и я хочу, чтобы он показывал только имена контактов. Но сейчас он показывает имя и номер телефона. – user1032336

ответ

3

Прежде всего, запрос только имя контакта и идентификатор:

В манифесте вы должны объявить

<uses-permission android:name="android.permission.READ_CONTACTS" /> 
public Loader<Cursor> onCreateLoader(int loaderID, Bundle bundle){ 
     Uri uri    = ContactsContract.Contacts.CONTENT_URI; 
     String[] projection = new String[] { ContactsContract.Contacts._ID, 
            ContactsContract.Contacts.DISPLAY_NAME}; 
     String sortOrder  = ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC"; 

     // Returns a new CursorLoader 
     return new CursorLoader(
        getActivity(), // Parent activity context 
        uri,  // Table to query 
        projection,  // Projection to return 
        null,   // No selection clause 
        null,   // No selection arguments 
        sortOrder  // Sort by name 
    ); 

} 

После того, как вы получили Cursor с контактами, которые должны что в a CursorAdapter

private final static String[] FROM_COLUMNS = { 
     Build.VERSION.SDK_INT 
       >= Build.VERSION_CODES.HONEYCOMB ? 
       Contacts.DISPLAY_NAME_PRIMARY : 
       Contacts.DISPLAY_NAME 
}; 
private final static int[] TO_IDS = { 
     android.R.id.text1 
}; 


public void onActivityCreated(Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 
    ... 
    // Gets the ListView from the View list of the parent activity 
    mContactsList = 
     (ListView) getActivity().findViewById(R.layout.contact_list_view); 
    // Gets a CursorAdapter 
    mCursorAdapter = new SimpleCursorAdapter(
      getActivity(), 
      R.layout.contact_list_item, 
      null, 
      FROM_COLUMNS, TO_IDS, 
      0); 
    // Sets the adapter for the ListView 
    mContactsList.setAdapter(mCursorAdapter); 

    // Prepare the loader. Either re-connect with an existing one, 
    // or start a new one. 
    getLoaderManager().initLoader(0, null, this); 

} 

public void onLoadFinished(Loader<Cursor> loader, Cursor data) { 
    // Swap the new cursor in. (The framework will take care of closing the 
    // old cursor once we return.) 
    mAdapter.swapCursor(data); 

    // The list should now be shown. 
    if (isResumed()) { 
     setListShown(true); 
    } else { 
     setListShownNoAnimation(true); 
    } 
} 
Смежные вопросы