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)の画像
こんにちは@Naila少なくともあなたのコードの一部を提供できますか?開始するための良い方法になります... –
@EliasMP私はコードで私の質問を編集しました。あなたの助けに感謝します。 – Naila