如何在没有图像的联系人上显示自定义图标?

问题描述

我想在左侧显示带有图像的联系人列表,我可以使用以下代码实现此目的,但我想知道如何在左侧显示自定义图标 如果没有为该联系人设置图像?

我在 drawable 中有我的自定义图标,名为“my_icon”。

我显示联系人列表的片段;

    public class FragmentContacts extends Fragment
    implements LoaderManager.LoaderCallbacks<Cursor>{
    ImageView imageView;
    private ListView lv_ContactList;
    private SimpleCursorAdapter mCursorAdapter;
    private static final String DISPLAY_NAME = Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB                         
    ? ContactsContract.Contacts.DISPLAY_NAME_PRIMARY : ContactsContract.Contacts.DISPLAY_NAME;

    private static final String[] contactsColumns = {    ContactsContract.Contacts._ID,ContactsContract.Contacts.LOOKUP_KEY,DISPLAY_NAME,ContactsContract.Contacts.PHOTO_URI    };
    private final String contactsFilter = "(" +ContactsContract.Contacts.HAS_PHONE_NUMBER+ "='1') AND 
    (" + ContactsContract.Contacts.IN_VISIBLE_GROUP + "='1')";
    private final String contactsSortOrder = DISPLAY_NAME + " COLLATE LOCALIZED ASC";

    private final static String[] listDisplayColumns = { DISPLAY_NAME,ContactsContract.Contacts.PHOTO_URI   };
    private final static int[] listDataViewIDs = { R.id.contact_name,R.id.imgContact };

    String[] mSelectionArgs;

    @Override
    public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState) 
    {
    View view = inflater.inflate(R.layout.frag_contacts,null);
    lv_ContactList = (ListView)view.findViewById(R.id.lv_ContactList);
    return view;
    }

    @Override
    public void onResume(){
    super.onResume();

    mCursorAdapter= new SimpleCursorAdapter( getActivity(),R.layout.list_row_contact,null,listDisplayColumns,listDataViewIDs,0);
    lv_ContactList.setAdapter(mCursorAdapter);
    getLoaderManager().initLoader(0,this);
    }

    @Override
    public Loader<Cursor> onCreateLoader(int id,Bundle args ) {
    if(mSelectionArgs == null)
        return new CursorLoader( getActivity(),ContactsContract.Contacts.CONTENT_URI,contactsColumns,contactsFilter,contactsSortOrder );
    else
        return new CursorLoader( getActivity(),contactsFilter + " AND (" + DISPLAY_NAME+" LIKE ?)",mSelectionArgs,contactsSortOrder );
       }
    @Override
    public void onLoadFinished( Loader<Cursor> loader,Cursor data ) {
    mCursorAdapter.swapCursor(data);
    }
    @Override
    public void onLoaderReset( Loader<Cursor> loader ) {
    mCursorAdapter.swapCursor(null);
    }
    }

解决方法

将您的自定义图像导入可绘制对象。 如果联系人照片的uri不存在,则上传自定义图片

,

您可以将自定义图像添加到可绘制对象中。一旦你有了它,就可以进入你的布局,在 ImageView 中,你可以将它设置为你的图像的 src。该图像将一直显示,直到您设置另一个图像。

在这个示例 ImageView 中,我使用了“@drawable/icondummy”作为加载或空时的图像。

<ImageView
    android:id="@+id/imageUserIconHome"
    android:src="@drawable/icondummy"
    android:layout_width="35dp"
    android:layout_height="35dp" />
,

我已经想通了, 只是使用了 _.forEach(arrOfObj,(arrVal,arrIn) => { arrVal.isAcitve = true; } 而不是 android:background="@drawable/my_icon",它显示了它的魔力

android:src="@drawable/my_icon"

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...