Ich kann Informationen aus einer URL-HTML-Datei genauer die Tabellen aus der Klammer-Site Challonge.com abrufen und diese Informationen in einer Listenansicht für eine App mit Xamarin speichern und anzeigen Formen.So erstellen Sie eine Benachrichtigung, wenn Daten von HTML-Seiten einer Website geändert werden
Nun, was ich versuche zu lernen ist, wie Sie die Liste aktualisieren, wenn die Daten aus dem HTML aktualisiert werden. Wenn der Stand auf der Website aktualisiert wird, möchte ich eine Benachrichtigung in meiner App erstellen, die die Änderung in der Rangliste mitteilt.
Ich denke, ich muss eine beobachtbare Sammlung verwenden, um Änderungen in der HTML-Datei zu erkennen? aber ich verstehe nicht, wie es funktioniert oder ob das der richtige Ansatz wäre.
public async Task StartWebCrawl()
{
// var url = "http://challonge.com/lhswaterwars17/standings";
var url = "http://challonge.com/jex0ymd2/standings";
var httpClient = new HttpClient();
var html = await httpClient.GetStringAsync(url);
var htmlDocument = new HtmlDocument();
htmlDocument.LoadHtml(html);
var divs = htmlDocument.DocumentNode.Descendants("td")
.Where(node => node.GetAttributeValue("class", "")
.Equals("left display_name"))
.ToList();
var participants = new List<Particpants>();
//var teamName = new List<String>();
var teamStandings = new ObservableCollection<String>();
foreach (var div in divs)
{
var participant = new Particpants
{
TeamName = div.Descendants("span").FirstOrDefault().InnerText
};
participants.Add(participant);
}
foreach (var name in participants)
{
//Debug.WriteLine(name.TeamName);
//teamName.Add(name.TeamName);
teamStandings.Add(name.TeamName);
}
//ListView.ItemsSource = teamName;
ListView.ItemsSource = teamStandings;
teamStandings.CollectionChanged += HandleChange;
}
private void HandleChange(object sender, NotifyCollectionChangedEventArgs e)
{
DisplayAlert("Standings", "an Update occured", "Cancel");
}
}
, wenn Sie für Änderungen überwachen möchten, finden Sie die aktuellen Ergebnisse speichern müssen, regelmäßig die neuesten Ergebnisse herunterladen und sie dann vergleichen, um zu sehen, ob sie besser – Jason
noch nicht geändert haben, erhalten einen Hash von den Inhalten und vergleichen Sie einfach Hashes. – Trey
Wie würde ich dann regelmäßig die neuesten Ergebnisse erhalten? Würde ich die Funktion alle paar Sekunden anrufen? – BigDuke6