contactsList
readContacts()
विधि निष्पादित होने तक खाली है, दूसरे शब्दों में, contactsView.setAdapter(adapter)
निष्पादित किया गया था, contactsList
खाली है, तो यह कोड अभी भी संपर्कों की जानकारी को सही तरीके से क्यों दिखा सकता है?मुझे Adapter.notifyDataSetChanged() का उपयोग करने की आवश्यकता क्यों नहीं है?
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();
}
}
}
}
लेकिन अगर मैं कुछ इस तरह जोड़ने के लिए, मैं notifyDataSetChanged()
कॉल करनी होगी:
add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
contactsList.add("blabla");
adapter.notifyDataSetChanged();
}
});
add
बटन है। अब एंड्रॉइड स्वचालित रूप से विधि को कॉल करेगा, क्यों adapter.notifyDataSetChanged();
हटाएं यूआई रीफ्रेश नहीं कर सका?
धन्यवाद!लेकिन मेरे पास एक नया सवाल है, उपरोक्त में रीफ्रेश करें :) – HungryMilk
@ हंगरी मिल्क हाय अपडेटेड स्पष्टीकरण पर एक नज़र डालें और यदि यह इसे उत्तर के रूप में स्वीकार करने में मदद करता है :) –
क्षमा करें, मैं भूल गया! धन्यवाद :) – HungryMilk