2

xamarin フォーム リスト ビューでの画像の読み込みでメモリの問題に直面しています。現在、フォームにビットマップ画像を実装する必要がありますが、xamarin フォームではそれを行うことができません。xamarin フォームでビット マップを含む名前空間が見つかりません。通常のデータがあります。画像もバインドするバインディングコード

 public async void GetResult()
    //public  void GetResult()
    {
        try
        {
            IsBusy = true;
            var client = new HttpClient();
            var json = await client.GetStringAsync(string.Format(Url));
            var items = JsonConvert.DeserializeObject<ObservableCollection<cm_main_category>>(json.ToString());
            foreach (var item in items)
            {
                 item.image_url = "http://somelink.net" + item.image_url.Substring(1, item.image_url.Length - 1);
               // item.image_url = "http://127.0.0.1" + item.image_url.Substring(1, item.image_url.Length - 1);
                ListItems.Add(item);
            }
            IsBusy = false;
        }

今、私はこのコードにビットマップを実装する必要があります。どのようなアプローチが必要ですか?

4

3 に答える 3

0

当然、URI で画像をバインドします。これは、Xamarin.Forms では非常に簡単です。

の を URI を知っているプロパティにバインドするだけですImageSourcePropertyImageCellXAML バインディングと C# バインディングの両方の優れた例は、 https ://www.syntaxismyui.com/xamarin-forms-listview-imagecell-recipe/ にあります。

編集: コメントからコピー: 解決策は、イメージ ソースを null に設定し、ここで説明されているようにガベージ コレクションをトリガーすることです: OutOfMemoryError when loading an image

于 2015-08-19T09:31:13.180 に答える
0
 protected override void OnDisappearing()
    {
        BindingContext = null;
        Content = null;
        base.OnDisappearing();
        GC.Collect();
    }

一部のアプリでは、アプリがビットマップを追加した画像を使用して何千ものデータを処理している場合に役立ちます

于 2015-08-20T11:00:07.467 に答える