【问题标题】:Contact Number repeating in Xamarin.formsXamarin.forms 中重复的联系人号码
【发布时间】: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


    【解决方案1】:

    您有两个 ManagedQuerys、namesnumber,但仅在 do 循环结束时通过 names.MoveToNext() 推进 names 查询。

    您应该删除ManagedQuery 之一,并在一次查询中返回您需要的所有列,以便您可以从same 数据行中获取名称和匹配编号。

    【讨论】:

    • 我试过了,但只有名字而不是数字,你能编辑一下吗?请更正。
    猜你喜欢
    • 1970-01-01
    • 2018-05-27
    • 1970-01-01
    • 1970-01-01
    • 2017-06-22
    • 1970-01-01
    • 2021-07-06
    • 2011-03-09
    • 1970-01-01
    相关资源
    最近更新 更多