как получить список контактов в режиме просмотра списка в Android?

#listview #android-layout #import-contacts

#listview #android-макет #импорт-контакты

Вопрос:

я хочу получить все контакты с телефона в нашем собственном представлении списка, но код открывает список контактов телефона … это мой код для класса, который я использую для получения контактов .. я использую кнопку контакта, чтобы запустить событие и получить контакты в моем представлении списка, но нулевое значениепроисходит исключение указателя в строке, отмеченной *
ПОЖАЛУЙСТА, ПОМОГИТЕ МНЕ. заранее спасибо

         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 amp;amp; 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:

Вам нужно позвонить setContentView() , прежде чем звонить findViewbyId() , иначе у вас нет макета для поиска вашего представления

Комментарии:

1. эта строка setContentView() ошибочно закомментирована .. я запускал код с этой строкой и даже со всеми возможными редакциями, но с тем же исключением нулевого указателя, которое я получаю в той же строке .. одна вещь, которую я хочу спросить, что я включил свой TEXTVIEW в представление списка, но я обнаружил, чтоего необходимо добавить в другой макет, и он динамически добавляется в textview через listadapter .. не могли бы вы подсказать мне способ или любой другой возможный .. спасибо

2. является ли R.id.button_contacts внутри R.layout. allbuttons или R.макет. main если это так, вам обязательно нужно вызвать rlayout.findViewById(R.id.button_contacts)

3. Также есть ли какая-либо причина для создания макета программно, не могли бы вы использовать XML-файл макета?