Die contactsList
ist leer, bis die readContacts()
Methode ausgeführt wurde, mit anderen Worten, wenn contactsView.setAdapter(adapter)
ausgeführt wurde, ist die contactsList
leer, also warum dieser Code immer noch die Kontaktdaten korrekt anzeigen kann?Warum muss ich Adapter.notifyDataSetChanged() nicht verwenden?
public class MainActivity extends AppCompatActivity {
ListView contactsView;
ArrayAdapter<String> adapter;
List<String> contactsList = new ArrayList<String>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
contactsView = (ListView) findViewById(R.id.contacts_list);
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, contactsList);
contactsView.setAdapter(adapter);
readContacts();
}
private void readContacts() {
Cursor cursor = null;
try {
cursor = getContentResolver().query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
null, null, null, null);
while (cursor.moveToNext()) {
String displayName = cursor.getString(cursor.getColumnIndex(
ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME
));
String number = cursor.getString(cursor.getColumnIndex(
ContactsContract.CommonDataKinds.Phone.NUMBER
));
contactsList.add(displayName + "\n" + number);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (cursor != null) {
cursor.close();
}
}
}
}
aber wenn ich so etwas wie dieses hinzufügen, ich habe notifyDataSetChanged()
zu nennen:
add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
contactsList.add("blabla");
adapter.notifyDataSetChanged();
}
});
add
Taste ist. jetzt, dass der Android würde die Methode automatisch aufrufen, warum beim Entfernen der adapter.notifyDataSetChanged();
die Benutzeroberfläche konnte nicht aktualisieren?
danke!aber ich habe eine neue Frage, in der oben genannten aktualisieren :) – HungryMilk
@HungryMilk Hallo, es gibt einen Blick auf die aktualisierte Erklärung und wenn es hilft, es als Antwort zu akzeptieren :) –
Sorry, ich habe vergessen! Danke :) – HungryMilk