Мне просто нужно заполнить listView списком моих локальных контактов с контрактом контактов, но по какой-то причине listView все еще пуст.
По какой-то причине, когда инициализируется LoaderManager, он равен нулю
Я также добавил разрешения в свой манифест использования разрешений android: name = "android.permission.READ_CONTACTS
Вот мой код:
ListView lstContactes;
public static final int CONTACT_LOADER_ID = 1;
//private SimpleCursorAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_contactes);
lstContactes = findViewById(R.id.lstContactes);
getLoaderManager().initLoader(1, null, this).forceLoad();
}
@Override
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
String mColumnProjection[] = new String[]{ ContactsContract.Contacts.DISPLAY_NAME_PRIMARY};
switch (id)
{
case CONTACT_LOADER_ID:
/*CursorLoader cur = new CursorLoader(this,
ContactsContract.Contacts.CONTENT_URI,
null,null,null,null);*/
CursorLoader cursor = new CursorLoader( this,ContactsContract.Contacts.CONTENT_URI,
mColumnProjection,
null,
null,
null);
return cursor;
}
return null;
}
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
SimpleCursorAdapter adaptador;
switch (loader.getId())
{
case CONTACT_LOADER_ID:
adaptador = (SimpleCursorAdapter) lstContactes.getAdapter();
if(adaptador != null) adaptador.swapCursor(data);
}
}
@Override
public void onLoaderReset(Loader<Cursor> loader) {
SimpleCursorAdapter adaptador;
switch (loader.getId())
{
case CONTACT_LOADER_ID:
adaptador = (SimpleCursorAdapter) lstContactes.getAdapter();
if(adaptador != null) adaptador.swapCursor(null);
}
}
}