簡體   English   中英

Xamarin.forms中重復的聯系電話

[英]Contact Number repeating in Xamarin.forms

從電話中檢索聯系人列表時遇到問題,我在Xamarin.Forms中獲得所有聯系人姓名的相同聯系人號碼。 我是Xamarin的新手,想在listview中加載所有電話聯系人。 這是我的代碼:

  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>

您有兩個ManagedQuery ,即namesnumber但僅在do循環的末尾通過names.MoveToNext()來推進names查詢。

您應該刪除其中一個ManagedQuery並在一個查詢中返回所需的所有列,以便可以從same數據行中獲取名稱和匹配編號。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM