【发布时间】:2017-08-04 07:55:42
【问题描述】:
我在从电话中检索联系人列表时遇到问题,我在 Xamarin.Forms 中为所有联系人姓名获取相同的联系人号码。我是 Xamarin 的新手,想在列表视图中加载所有电话联系人。 这是我的代码:
private List<ContactMenu> LoadAllContacts()
{
List<ContactMenu> getContactNamesAndNumber = new List<ContactMenu>();
//Bind Contacts
var forContactNames = ContactsContract.Contacts.ContentUri;
string[] forContactNumbers = {
ContactsContract.Contacts.InterfaceConsts.Id,
ContactsContract.Contacts.InterfaceConsts.DisplayName
};
var forContactNumber = ContactsContract.CommonDataKinds.Phone.ContentUri;
string[] forContactDisplayNumber = { ContactsContract.Contacts.InterfaceConsts.Id, ContactsContract.CommonDataKinds.Phone.Number };
var names = ManagedQuery(forContactNames, forContactNumbers, null, null, null);
var nameList = new List<string>();
var number = ManagedQuery(forContactNumber, forContactDisplayNumber, null, null, null);
var numbeList = new List<string>();
if (names.MoveToFirst() && number.MoveToFirst())
{
do
{
getContactNamesAndNumber.Add(new ContactMenu
{
ContactName = names.GetString(names.GetColumnIndex(forContactNumbers[1])), ContactNumber = number.GetString(number.GetColumnIndex(forContactDisplayNumber[1]))
});
numbeList.Add(number.GetString(number.GetColumnIndex(forContactDisplayNumber[1])));
nameList.Add(names.GetString(names.GetColumnIndex(forContactNumbers[1])));
} while (names.MoveToNext());
}
ListAdapter = new ArrayAdapter<string>(this, Resource.Layout.ContactItemView, numbeList);
return getContactNamesAndNumber;
}
还有我的 Xaml:
<StackLayout HorizontalOptions="Center">
<Label Text="Please Select Contact" TextColor="Black" FontFamily="Arial" FontSize="Medium" Font="16"></Label>
<ListView x:Name="myContacts" HorizontalOptions="Start" ItemTapped="myContacts_ItemTapped">
<ListView.ItemTemplate>
<DataTemplate>
<TextCell Text="{Binding ContactName}" DetailColor="Green" TextColor="Black"/>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackLayout>
【问题讨论】:
标签: xaml xamarin xamarin.forms