2016-06-29 9 views
0

Ich versuche, Bild von Assets zu imageView hinzuzufügen. Ich mache das aus der Adapterklasse. Ich erhalte Java.IO.FileNotFoundException für die vorhandene Datei.Java.IO.FileNotFoundException beim Lesen der Assets-Datei aus der Adapter-Klasse - Xamarin

Hier ist meine Adapterklasse:

using System; 
using System.Collections.Generic; 
using Android.App; 
using Android.Content; 
using Android.OS; 
using Android.Runtime; 
using Android.Views; 
using Android.Widget; 
using Java.IO; 
using Android.Graphics; 

namespace test2 
{ 
    public class MyListViewAdapter : BaseAdapter<Person> 
    { 
     private List<Person> mItems; 
     private Context mContext; 
     private Button mButton; 
     private Activity activity; 
    public MyListViewAdapter(Context context, List<Person> items) 
    { 
     mItems = items; 
     mContext = context; 
     this.activity = (Activity)context; 
    } 
    public override int Count 
    { 
     get 
     { 
      return mItems.Count; 
     } 
    } 
    public override long GetItemId(int position) 
    { 
     return position; 
    } 
    public override Person this[int position] 
    { 
     get 
     { 
      return mItems[position]; 
     } 
    } 
    public override View GetView(int position, View convertView, ViewGroup parent) 
    { 
     View row = convertView; 
     if (row == null) 
     { 
      row = LayoutInflater.From(mContext).Inflate(Resource.Layout.listview_row, null, false); 
     } 

     /* 
     some code 
     */ 

     Android.Content.Res.AssetManager assets = mContext.Assets; 
     ImageView imageViewStar1 = row.FindViewById<ImageView>(Resource.Id.imageViewStar1); 
     var InStr = assets.Open("poi_star_empty.png"); //here is an exception 
     Bitmap bitmap = BitmapFactory.DecodeStream(InStr); 
     imageViewStar1.SetImageBitmap(bitmap); 

     /* 
     some code 
     */ 

     return row; 
    } 


    private class ButtonClickListener : Java.Lang.Object, View.IOnClickListener 
    { 
     /* 
     some code 
     */ 
    } 

} }

Wie kann ich dieses Bild aus nicht Aktivitätsklasse gelesen haben?

Das ist, wie ich MyListViewAdapter Konstruktor aufrufen:

mAdapter = new MyListViewAdapter(this, mItems); 

Hier ist meine Vermögenswerte Liste:

My folders

Antwort

0

Ich habe es! Für mein Vermögen hatte ich Build Aktion AndroidAsset zu setzen und es funktioniert

0

Kopie Datei auf Vermögenswerte Ordner in xamarin.droid und dann in den Eigenschaften der Datei wählen Sie Build-Aktion dann AndroidAsset es dann wie

Zugang

var fd = global::Android.App.Application.Context.Assets.OpenFd(fileName);