how to get contact list in list view in android?

745 views Asked by At

i want to retrieve all contacts from the phone to our own list view but the code is opening the phone's contact list...this is my code for the class i am using to get the contacts..i am using contact button to fire the event and get the contacts in my list view but a null pointer exception at line marked by * is occurring...
KINDLY HELP ME. thanks in advance

        public class BusinessCardActivity extends Activity  {
           private static final int PICK_CONTACT_REQUEST = 1;
          private final ContactAccessor mContactAccessor = ContactAccessor.getInstance();
            ImageButton contact_button;
            @Override
            public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);

                //setContentView(R.layout.allbuttons);
                LinearLayout rlayout=new LinearLayout(this);
                rlayout.setOrientation(LinearLayout.VERTICAL);
                //RelativeLayout relativeLayout=       (RelativeLayout)findViewById(R.layout.main);

                //RelativeLayout relateLayout=(RelativeLayout)findViewById(R.layout.allbuttons);
                LayoutInflater layoutInflater = getLayoutInflater();


                rlayout.addView(layoutInflater.inflate(R.layout.main,null));
                rlayout.addView(layoutInflater.inflate(R.layout.allbuttons,null));
                //pickContact();
                // Install a click handler on the Pick Contact button

                contact_button=new ImageButton(getApplicationContext());
               *** contact_button = (ImageButton)findViewById(R.id.button_contacts);

                contact_button.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        pickContact();
                    }
                });
                this.setContentView(rlayout);
            }


            protected void pickContact() {
                startActivityForResult(mContactAccessor.getPickContactIntent(), PICK_CONTACT_REQUEST);
            }


            @Override
            protected void onActivityResult(int requestCode, int resultCode, Intent data) {
                if (requestCode == PICK_CONTACT_REQUEST && resultCode == RESULT_OK) {
                    loadContactInfo(data.getData());
                }
            }


            private void loadContactInfo(Uri contactUri) {


                AsyncTask<Uri, Void, ContactInfo> task = new AsyncTask<Uri, Void, ContactInfo>() {

                    @Override
                    protected ContactInfo doInBackground(Uri... uris) {
                        return mContactAccessor.loadContact(getContentResolver(), uris[0]);
                    }

                    @Override
                    protected void onPostExecute(ContactInfo result) {
                        bindView(result);
                    }
                };

                task.execute(contactUri);
            }


            protected void bindView(ContactInfo contactInfo) {
                TextView displayNameView = (TextView) findViewById(R.id.display_name_text_view);
                displayNameView.setText(contactInfo.getDisplayName());

                TextView phoneNumberView = (TextView)findViewById(R.id.phone_number_text_view);
                phoneNumberView.setText(contactInfo.getPhoneNumber());
            }
        }
    .
1

There are 1 answers

3
Chris.D On BEST ANSWER

You need to call setContentView() before you call findViewbyId() otherwise you do not have a layout to find your view from