如何将我收到的引脚与数据分成不同的类别?

时间:2016-03-29 22:15:38

标签: c# xamarin xamarin.forms

所以我需要将两个独立的引脚分组,因为当我过滤它们时,我需要知道哪些引脚属于哪个类别。

这就是我收到它们的方式。因此,如果int app.value1为0,则加载一个组,如果app.value2为0,则加载另一个组。

我需要将它们分开的原因是因为我正在做一个过滤器,我需要将它们分开。我应该做两个不同的清单吗?或者有更好的方法吗?

List<Pin> myPins = new List<Pin>();

private async Task<List<Pin>> LoadData() 
{
    var pins = new List<Pin> ();

    var getItems = await phpApi.getInfo ();

        foreach (var currentItem in getItems["results"]) {

            longString = currentItem ["long"].ToString (); 
            latString = currentItem ["lat"].ToString (); 

                if (App.value1 == 0) {  //so this below is the first group of pins then
                        var pin = new Pin ();
                        pin.Position = new Position (latString, longString);
                        pin.Label = "testlabel";
                        pin.Address = "testadress";

                        pins.Add (pin);
                    }

                if (App.value2 == 0) { //second group of pins
                 //i add pins here as well (so the same code as App.value1), but this intvalue is connected to a different "button"
                      pins.Add (pin);
                }

        }
    }

这是我的过滤器现在无法正常工作,因为该引脚不知道属于哪个组:

private  async void FilterPins (string filter)
    {
        map.Pins.Clear ();

        foreach(Pin p in myPins) {

            if (string.IsNullOrWhiteSpace(filter) || (p.Label.Contains(filter)))     {
                map.Pins.Add (p); //this is just a searchfilter via my searchbar that isnt working when I add the code below. If i remove the code below this function works.
            }

            if (App.value1 == 0 ) {
                map.Pins.Add (p);
                System.Diagnostics.Debug.WriteLine ("add");
            } 


            if (App.value2 == 0 ) {
                map.Pins.Add (p);
                System.Diagnostics.Debug.WriteLine ("add");
            } 

        }
    }

1 个答案:

答案 0 :(得分:0)

由于Pin课程为sealedhttps://developer.xamarin.com/api/type/Xamarin.Forms.Maps.Pin/),因此有点难以解决。但是,您应该可以创建两个单独的List<Pin>,您可以根据过滤器将相应的Pin对象放入其中。然后,您可以将相应的Map.Pins对象与您需要显示的Pin对象列表进行交换。

https://developer.xamarin.com/api/property/Xamarin.Forms.Maps.Map.Pins/

否则,您可以创建另一个POCO对象,其中包含Pin个对象和string Category

EX:

public class PinWithCategory { public Pin Pin {get; set;} public string Category {get; set;} }