Android 如何在没有图像的联系人上显示自定义图标?
我想在左边显示联系人的图像列表,我可以用下面的代码实现这一点,但我想知道如果没有为该联系人设置图像,如何在左边显示自定义图标 我在drawables中有我的自定义图标,名为“my_icon” 我显示联系人列表的片段Android 如何在没有图像的联系人上显示自定义图标?,android,android-studio,android-fragments,android-contacts,Android,Android Studio,Android Fragments,Android Contacts,我想在左边显示联系人的图像列表,我可以用下面的代码实现这一点,但我想知道如果没有为该联系人设置图像,如何在左边显示自定义图标 我在drawables中有我的自定义图标,名为“my_icon” 我显示联系人列表的片段 public class FragmentContacts extends Fragment implements LoaderManager.LoaderCallbacks<Cursor>{ ImageView imageView; pr
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, null, this);
}
@Override
public Loader<Cursor> onCreateLoader(int id, Bundle args ) {
if(mSelectionArgs == null)
return new CursorLoader( getActivity(), ContactsContract.Contacts.CONTENT_URI,
contactsColumns, contactsFilter, null, contactsSortOrder );
else
return new CursorLoader( getActivity(), ContactsContract.Contacts.CONTENT_URI,
contactsColumns, 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);
}
}
公共类碎片contacts扩展了碎片
实现LoaderManager.LoaderCallbacks{
图像视图图像视图;
私有ListView lv_联系人列表;
私人SimpleCursorAdapter mCursorAdapter;
私有静态最终字符串显示\u NAME=Build.VERSION.SDK\u INT>=Build.VERSION\u code.html
?Contacts contract.Contacts.DISPLAY_NAME_主:Contacts contract.Contacts.DISPLAY_NAME;
私有静态最终字符串[]contactsColumns={ContactsContract.Contacts.\u ID,
ContactsContract.Contacts.LOOKUP_键,显示_名称,ContactsContract.Contacts.PHOTO_URI};
私人最终字符串contactsFilter=“(“+ContactsContract.Contacts.HAS_PHONE_NUMBER+”=“1”)和
(“+Contacts contract.Contacts.IN_VISIBLE_GROUP+”='1')”;
私有最终字符串ContactsOrder=显示\u名称+“整理本地化ASC”;
私有最终静态字符串[]listDisplayColumns={DISPLAY\u NAME,
Contacts contract.Contacts.PHOTO_URI};
私有最终静态int[]ListDataViewId={R.id.contact_name,R.id.imgContact};
字符串[]mSelectionArgs;
@凌驾
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态)
{
视图=充气机。充气(R.layout.frag_触点,空);
lv_ContactList=(ListView)view.findViewById(R.id.lv_ContactList);
返回视图;
}
@凌驾
恢复时公开作废(){
super.onResume();
mCursorAdapter=new SimpleCursorAdapter(getActivity(),R.layout.list_row_contact,null,
listDisplayColumns,ListDataViewId,0);
lv_ContactList.setAdapter(mCursorAdapter);
getLoaderManager().initLoader(0,null,this);
}
@凌驾
公共加载器onCreateLoader(int-id,Bundle-args){
if(mSelectionArgs==null)
返回新的游标装入器(getActivity(),Contacts contract.Contacts.CONTENT\u URI,
Contacts列、contactsFilter、null、ContactsOrder);
其他的
返回新的游标装入器(getActivity(),Contacts contract.Contacts.CONTENT\u URI,
contactsColumns、contactsFilter+“和(“+DISPLAY_NAME+“LIKE?”)、mSelectionArgs、,
接触器;
}
@凌驾
public void onLoadFinished(加载器、光标数据){
mCursorAdapter.swapCursor(数据);
}
@凌驾
公共void onLoaderReset(加载器){
mCursorAdapter.swapCursor(空);
}
}
将您的自定义图像导入到绘图表中。
如果联系人照片的uri不存在,则上载自定义图像将自定义图像导入到绘图中。
如果联系人照片的uri不存在,则上载自定义图像您可以将自定义图像添加到绘图中。一旦有了它,就转到布局,在ImageView中,可以将其设置为src your image。图像将一直显示,直到您设置另一个图像 在这个示例ImageView中,我使用“@drawable/icondumy”作为加载或空时的图像
<ImageView
android:id="@+id/imageUserIconHome"
android:src="@drawable/icondummy"
android:layout_width="35dp"
android:layout_height="35dp" />
您可以将自定义图像添加到绘图表中。一旦有了它,就转到布局,在ImageView中,可以将其设置为src your image。图像将一直显示,直到您设置另一个图像 在这个示例ImageView中,我使用“@drawable/icondumy”作为加载或空时的图像
<ImageView
android:id="@+id/imageUserIconHome"
android:src="@drawable/icondummy"
android:layout_width="35dp"
android:layout_height="35dp" />
我已经弄明白了,
刚用了android:background=“@dravable/my_icon”
而不是android:src=“@dravable/my_icon”
,它显示了它的魔力
<ImageView
android:id="@+id/my_icon"
android:layout_width="35dip"
android:background="@drawable/chaticon"
android:clickable="true"
android:layout_height="35dip"
android:layout_gravity="center"
android:layout_margin="5dip" />
我已经弄明白了,
刚用了android:background=“@dravable/my_icon”
而不是android:src=“@dravable/my_icon”
,它显示了它的魔力
<ImageView
android:id="@+id/my_icon"
android:layout_width="35dip"
android:background="@drawable/chaticon"
android:clickable="true"
android:layout_height="35dip"
android:layout_gravity="center"
android:layout_margin="5dip" />
请将代码添加为文本,而不是图像,这样人们更容易验证您的答案。不知道为什么,但事实并非如此working@UtaibaNaqshbandi你有错误吗?还是仍然是空的?没有错误,只是空的请将代码添加为文本,而不是图像,这样人们更容易验证您的答案。不知道为什么,但事实并非如此working@UtaibaNaqshbandi你有错误吗?还是仍然是空的?没有错,只是空的