android quickcontactbadge不显示?

android quickcontactbadge不显示?,android,android-recyclerview,quickcontactbadge,Android,Android Recyclerview,Quickcontactbadge,我正在尝试将QuickContactBadge添加到Recyclerview中 详细信息: public class CoViewHolder extends RecyclerView.ViewHolder { QuickContactBadge imageView; TextView title, phone; ImageView call; String pho, nam; int position; boolean concal; S

我正在尝试将
QuickContactBadge
添加到
Recyclerview

详细信息:

public class CoViewHolder extends RecyclerView.ViewHolder {
    QuickContactBadge imageView;
    TextView title, phone;
    ImageView call;
    String pho, nam;
    int position;
    boolean concal;
    String contactID;
    private static final int CONTACT_PICKER_RESULT = 0;

    public CoViewHolder(View v, int viewType) {
        super(v);
        title = (TextView) v.findViewById(R.id.name);
        phone = (TextView) v.findViewById(R.id.no);
        call = (ImageView) v.findViewById(R.id.ccbtn);
        imageView = (QuickContactBadge) v.findViewById(R.id.pic);


        imageView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent ii = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
                startActivityForResult(ii, CONTACT_PICKER_RESULT);
            }
        });
    }

    private void startActivityForResult(Intent ii, int contactPickerResult) {
        if(contactPickerResult==RESULT_OK)
        switch (contactPickerResult) {
            case CONTACT_PICKER_RESULT:
                Uri contactUri =  ii.getData();
               FrameLayout frameLayout = (FrameLayout)activity.findViewById(R.id.badge_holder_large);
                QuickContactBadge badge = new QuickContactBadge(activity);
                badge.assignContactUri(contactUri);
                badge.setMode(ContactsContract.QuickContact.MODE_LARGE);
                frameLayout.addView(badge);


                Cursor cursorID = activity.getContentResolver().query(contactUri,
                        new String[]{ContactsContract.Contacts._ID}, null, null, null);
                if (cursorID.moveToNext()) {
                    contactID = cursorID.getString(cursorID.getColumnIndex(ContactsContract.Contacts._ID));

                }

                InputStream input = ContactsContract.Contacts.openContactPhotoInputStream(activity.getContentResolver(),
                        ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, new Long(contactID)));

                BufferedInputStream buf =new BufferedInputStream(input);
                Bitmap my_btmp = BitmapFactory.decodeStream(buf);

                if(my_btmp != null)
                    badge.setImageBitmap(my_btmp);
                else
                    badge.setImageResource(R.drawable.image);

        }
    }
}
我有一个列表,每个项目都有一张联系人的照片和一些文字

我想要什么:

public class CoViewHolder extends RecyclerView.ViewHolder {
    QuickContactBadge imageView;
    TextView title, phone;
    ImageView call;
    String pho, nam;
    int position;
    boolean concal;
    String contactID;
    private static final int CONTACT_PICKER_RESULT = 0;

    public CoViewHolder(View v, int viewType) {
        super(v);
        title = (TextView) v.findViewById(R.id.name);
        phone = (TextView) v.findViewById(R.id.no);
        call = (ImageView) v.findViewById(R.id.ccbtn);
        imageView = (QuickContactBadge) v.findViewById(R.id.pic);


        imageView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent ii = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
                startActivityForResult(ii, CONTACT_PICKER_RESULT);
            }
        });
    }

    private void startActivityForResult(Intent ii, int contactPickerResult) {
        if(contactPickerResult==RESULT_OK)
        switch (contactPickerResult) {
            case CONTACT_PICKER_RESULT:
                Uri contactUri =  ii.getData();
               FrameLayout frameLayout = (FrameLayout)activity.findViewById(R.id.badge_holder_large);
                QuickContactBadge badge = new QuickContactBadge(activity);
                badge.assignContactUri(contactUri);
                badge.setMode(ContactsContract.QuickContact.MODE_LARGE);
                frameLayout.addView(badge);


                Cursor cursorID = activity.getContentResolver().query(contactUri,
                        new String[]{ContactsContract.Contacts._ID}, null, null, null);
                if (cursorID.moveToNext()) {
                    contactID = cursorID.getString(cursorID.getColumnIndex(ContactsContract.Contacts._ID));

                }

                InputStream input = ContactsContract.Contacts.openContactPhotoInputStream(activity.getContentResolver(),
                        ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, new Long(contactID)));

                BufferedInputStream buf =new BufferedInputStream(input);
                Bitmap my_btmp = BitmapFactory.decodeStream(buf);

                if(my_btmp != null)
                    badge.setImageBitmap(my_btmp);
                else
                    badge.setImageResource(R.drawable.image);

        }
    }
}
我想点击图片并打开QuickContactBadge。 但这对我不起作用

这是我的代码:

public class CoViewHolder extends RecyclerView.ViewHolder {
    QuickContactBadge imageView;
    TextView title, phone;
    ImageView call;
    String pho, nam;
    int position;
    boolean concal;
    String contactID;
    private static final int CONTACT_PICKER_RESULT = 0;

    public CoViewHolder(View v, int viewType) {
        super(v);
        title = (TextView) v.findViewById(R.id.name);
        phone = (TextView) v.findViewById(R.id.no);
        call = (ImageView) v.findViewById(R.id.ccbtn);
        imageView = (QuickContactBadge) v.findViewById(R.id.pic);


        imageView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent ii = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
                startActivityForResult(ii, CONTACT_PICKER_RESULT);
            }
        });
    }

    private void startActivityForResult(Intent ii, int contactPickerResult) {
        if(contactPickerResult==RESULT_OK)
        switch (contactPickerResult) {
            case CONTACT_PICKER_RESULT:
                Uri contactUri =  ii.getData();
               FrameLayout frameLayout = (FrameLayout)activity.findViewById(R.id.badge_holder_large);
                QuickContactBadge badge = new QuickContactBadge(activity);
                badge.assignContactUri(contactUri);
                badge.setMode(ContactsContract.QuickContact.MODE_LARGE);
                frameLayout.addView(badge);


                Cursor cursorID = activity.getContentResolver().query(contactUri,
                        new String[]{ContactsContract.Contacts._ID}, null, null, null);
                if (cursorID.moveToNext()) {
                    contactID = cursorID.getString(cursorID.getColumnIndex(ContactsContract.Contacts._ID));

                }

                InputStream input = ContactsContract.Contacts.openContactPhotoInputStream(activity.getContentResolver(),
                        ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, new Long(contactID)));

                BufferedInputStream buf =new BufferedInputStream(input);
                Bitmap my_btmp = BitmapFactory.decodeStream(buf);

                if(my_btmp != null)
                    badge.setImageBitmap(my_btmp);
                else
                    badge.setImageResource(R.drawable.image);

        }
    }
}

我从未想过如何使
assignContactUri()
正常工作。无论如何,由于您使用的是
Contacts contract.Contacts
,因此我想您可以通过电话(即,当您拥有时)绑定联系人徽章,如下所示:

badgeMedium.assignContactFromPhone("666-555-1234", true);
而不是:

badge.assignContactUri(contactUri);
为了检索联系人的电话号码,您可以查看一下,但您已经有了很多相关代码。这也可能有所帮助,因为自那时起,
QuickContactBadge
API没有太大变化


最后,请注意,
badge.setMode()
调用不再有效。

Hii,您找到解决方案了吗?如果是的话,你能编辑你的问题吗?如果不是的话,那么你想做什么?