2016-08-30 4 views
0
public class myAdapter : BaseAdapter<RootObject> 
{ 
    readonly Activity context; 
    List<RootObject> objects = new List<RootObject>(); 
    Bitmap bm; 
    View view; 
    ImageView iv; 

    public myAdapter(Activity context, List<RootObject> objects) 
    { 
     this.context = context; 
     this.objects = objects; 
    } 

    public override RootObject this[int position] 
    { 
     get { return objects[position]; } 
    } 

    public override int Count 
    { 
     get { return objects.Count; } 
    } 

    public override long GetItemId(int position) 
    { 
     return position; 
    } 

    public override View GetView(int position, View convertView, ViewGroup parent) 
    { 
     RootObject obj = objects[position]; 

     view = convertView; 

     if (view == null) // no view to re-use, create new 
     { 
      view = context.LayoutInflater.Inflate(Resource.Layout.listItem, null); 
     } 

     WebClient wc = new WebClient(); 
     wc.DownloadDataCompleted += new DownloadDataCompletedEventHandler(web_DownloadDataCompleted); 
     wc.DownloadDataAsync(new Uri(obj.imageUrl)); 

     iv = view.FindViewById<ImageView>(Resource.Id.Image); 

     view.FindViewById<TextView>(Resource.Id.tvName).Text = obj.name; 
     return view; 
    } 


    void web_DownloadDataCompleted(object sender, DownloadDataCompletedEventArgs e) 
    { 
     if (e.Error != null) 
     { 
     } 
     else 
     { 
      Bitmap bm = BitmapFactory.DecodeByteArray(e.Result, 0, e.Result.Length); 
      runonuithread(() => 
      { 
       iv.setimagebitmap(bm); 
      }); 
     } 
    } 

`私はxamarin(monodroid)のlistViewを扱っています。私は私のリストビューのためのカスタムアダプタを持っています。各リストアイテムは、イメージとテキストビューで構成されています。画像はURLから来ます。私のダウンロードイメージ関数では、私はdownloadDataAsyncを使用しています。しかし、イメージがダウンロードされる前に、他のすべての作業が完了し、私のアダプターのGetViewメソッドはイメージを持たず、テキストのみを返します。ビューが返された後でイメージリソースを更新する方法はありますか?私は実際にすべてのtextViewsを最初に表示し、画像を並行してダウンロードし続けたいと思っています。 ありがとうございますListView xamarin(monodroid)の画像

+0

こんにちは@Naila少なくともあなたのコードの一部を提供できますか?開始するための良い方法になります... –

+0

@EliasMP私はコードで私の質問を編集しました。あなたの助けに感謝します。 – Naila

答えて

0

AQueryライブラリは私の問題を解決しました。それが誰かのためにもうまくいくことを願っています。