Я использую функцию для выбора телефонных имен из телефонной книги Android и использую курсор для получения имени и номера контакта.Я могу успешно сделать это и вставить значения в базу данных sqllite, которую я написал с помощью другого вопроса здесь, но просмотр списка не обновляется автоматически, когда в базу данных добавляется новое значение.
Я использовал все необходимые строки, включая
((BaseAdapter)display_contacts1.getAdapter()).notifyDataSetChanged();
display_contacts1.invalidateViews();
arrayAdapter.notifyDataSetChanged();
manageListView(getContext());
Но мне все еще не удается найти решение.Единственный способ, которым обновится список, - это перейти к другому фрагменту или перезапустить приложение.
Исходный код базы данных SQL Android OnItemClick не работает с загруженной базой данных SQL в виде списка
SelectModemFragment.java
//--------------------------------------------------------------------
// Select Phone number from Contacts list
//--------------------------------------------------------------------
@Override
public void onActivityResult(int reqCode, int resultCode, Intent data)
{
if (resultCode == RESULT_OK)
{
// Check for the request code
switch (reqCode)
{
case CONTACT_PICKER:
contactPicked(data);
break;
}
}
else
{
Log.e("MainActiivity", "Failed to pick contact");
}
}
private void contactPicked(Intent data)
{
//Cursor cursor = null;
try
{
// getData() method will have the Content Uri of the selected contact
Uri uri = data.getData();
//Query the content uri
cursor = getActivity().getApplicationContext().getContentResolver().query(uri, null, null, null, null);
cursor.moveToFirst();
// column index of the contact name
int nameIndex =cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME);
// column index of the phone number
int phoneIndex =cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
name = cursor.getString(nameIndex);
phoneNo = cursor.getString(phoneIndex);
// Show message displaying the contact selected from the phonebook
Toast.makeText(getContext(),name, Toast.LENGTH_SHORT).show();
Toast.makeText(getContext(), phoneNo, Toast.LENGTH_SHORT).show();
// Insert values to sqlite database
dbHelper.insert(name, phoneNo);
// Need to immediately update the listview one the values have been inserted into the database
((BaseAdapter)display_contacts1.getAdapter()).notifyDataSetChanged();
//display_contacts1.invalidateViews(); // This isn't working
//arrayAdapter.notifyDataSetChanged(); // This isn't working
//manageListView(getContext());, this didn't work
}
catch (Exception e)
{
e.printStackTrace();
}
}