Ich habe eine Aktivität, in der ich die Kontakte vom Telefon in einer Listenansicht zeige. Jetzt habe ich die Funktion hinzugefügt, den neuen Kontakt hinzuzufügen, indem ich die Kontaktabsicht aufruft, um einen neuen Kontakt hinzuzufügen. Das ist gut gemacht.Wie wird die Listenansicht nach dem Hinzufügen des Kontakts aus der Kontaktabsicht aktualisiert?
Aber wenn ich nach dem Hinzufügen des Kontakts zur Aktivität zurückkehren, kann ich den zuletzt hinzugefügten Kontakt nicht sehen.
Ich habe versucht, die Listenansicht zu aktualisieren, indem ich invalidate() auch auf Adapter, den ich versuchte, durch Aufruf der invalidate() onResume -Methode.
Aber ich kann das Ergebnis nicht erhalten. Ich habe auch versucht, die add-Absicht mit startActivityForResult aufzurufen und die Kontakte in onActivityResult() zu erhalten, aber das ist auch fehlgeschlagen.
Ich weiß nicht, was schief läuft. Bitte helfen Sie.
Aktivität:
public class ContactList extends AppCompatActivity {
private ArrayList<contact> contact_list = null;
private contactAdapter mContactAdapter = null;
private ArrayList<contact> items;
private ArrayList<contact> selectedContacts;
boolean[] isChecked;
Cursor mCursor;
ListView lv;
public int RQS_PICK_CONTACT = 1,RQS_ADD_CONTACT = 2;
private static final int PERMISSIONS_REQUEST_READ_CONTACTS = 100;
ArrayList<Integer> selectedItemsPositions;
private ImageView done,back;
private boolean mContactListActivity;
private FloatingActionButton fab;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_contacts_list);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
toolbar.setTitle("");
TextView toolbarTitle = (TextView) toolbar.findViewById(R.id.toolbar_title);
toolbarTitle.setText("Select Contacts");
setSupportActionBar(toolbar);
done = (ImageView)findViewById(R.id.done);
back = (ImageView)findViewById(R.id.back);
fab = (FloatingActionButton)findViewById(R.id.fab);
contact_list = new ArrayList<contact>();
selectedContacts = new ArrayList<contact>();
// selectedItemsPositions = new ArrayList<>();
lv = (ListView)findViewById(R.id.list);
showContacts();
//getContacts();
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_INSERT,
ContactsContract.Contacts.CONTENT_URI);
startActivityForResult(intent,RQS_ADD_CONTACT);
}
});
}
@SuppressWarnings("unused")
private void getContacts() {
String[] projection = new String[] {
ContactsContract.Contacts.DISPLAY_NAME,
ContactsContract.Contacts.HAS_PHONE_NUMBER,
ContactsContract.Contacts._ID };
mCursor = managedQuery(ContactsContract.Contacts.CONTENT_URI, null, null, null, "upper("+ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME + ") ASC");
while (mCursor.moveToNext()) {
contact contact = new contact();
String contactId = mCursor.getString(mCursor.getColumnIndex(ContactsContract.Contacts._ID));
contact.setContactid(mCursor.getString(mCursor.getColumnIndex(ContactsContract.Contacts._ID)));
contact.setContactName(mCursor.getString(mCursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)));
contact_list.add(contact);
}
isChecked = new boolean[mCursor.getCount()];
for (int i = 0; i < isChecked.length; i++) {
isChecked[i] = false;
}
this.mContactAdapter = new contactAdapter(this, R.layout.contact_list_item, contact_list);
lv.setAdapter(this.mContactAdapter);
mContactAdapter.notifyDataSetChanged();
// mCursor.close();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == RQS_PICK_CONTACT) {
if (resultCode == RESULT_OK) {
getContacts();
}
}
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions,
int[] grantResults) {
if (requestCode == PERMISSIONS_REQUEST_READ_CONTACTS) {
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// Permission is granted
getContacts();
} else {
Toast.makeText(this, "Until you grant the permission, we canot display the names", Toast.LENGTH_SHORT).show();
}
}
}
private void showContacts()
{
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && checkSelfPermission(Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED) {
requestPermissions(new String[]{Manifest.permission.READ_CONTACTS}, PERMISSIONS_REQUEST_READ_CONTACTS);
//After this point you wait for callback in onRequestPermissionsResult(int, String[], int[]) overriden method
}
else {
getContacts();
}
}
@Override
public void onResume()
{
super.onResume();
mContactAdapter.notifyDataSetInvalidated();
//Intent intent = getIntent();
//intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
//finish();
//startActivity(intent);
}
}
dies versucht. Dosis nicht helfen. @ muruga5000 –
versuche diese listview.invalidateViews(); @ user6265109 – YUVRAJ
Dosis nicht helfen. :-(@ muruga5000 –