2017-03-28 3 views
0

Ich versuche, ein Bildraster mit Text anzuzeigen. Bilder aus einem Ordner verwenden. Ich habe verschiedene Ansätze und Tutorials ohne Erfolg versucht. Ich habe sowohl Lese- als auch Schreibrechte für den internen und externen Speicher. Wann immer ich die Anwendung debugge, bekomme ich nur einen leeren Bildschirm. Ich habe versucht, einen Haltepunkt auf der Adapter-GetView() Methode zu setzen, die nie getroffen wird.Xamarin Image Grid von Ordner

Hier ist meine MainActivity OnCreate() -Methode:

protected override void OnCreate(Bundle bundle) 
{ 
    if (!_dir.Exists()) { _dir.Mkdir(); } 

    base.OnCreate(bundle); 
    SetContentView(R.Layout.Main); 

    string[] FilePath = null; 
    string[] FileName = null; 

    if (_dir.IsDirectory) 
    { 
     DroidIO.File[] imageList = _dir.ListFiles(); 
     FilePath = new string[imageList.Length]; 
     FileName = new string[imageList.Length]; 

     for (int i = 0; i < imageList.Length; i++) 
     { 
      FilePath[i] = imageList[i].AbsolutePath; 
      FileName[i] = imageList[i].Name; 
     } 
    } 

    var gvImageList = FindViewById<GridView>(R.Id.gvImageList); 
    gvImageList.SetAdapter(new ImagesFromFolderAdapter(this, FilePath, FileName)); 
    gvImageList.ItemClick += delegate { gvImageList_ItemClick(); }; 
} 

Und mein Bild Adapter Klasse:

public class ImagesFromFolderAdapter : BaseAdapter 
{ 
    private Activity context; 
    private string[] filePath; 
    private string[] fileName; 

    public ImagesFromFolderAdapter(Activity c, string[] fp, string[] fn) 
    { 
     this.context = c; 
     this.fileName = fn; 
     this.filePath = fp; 
    } 

    public override int Count { get; } 

    public int GetCount() 
    { 
     return filePath.Length; 
    } 

    public override Java.Lang.Object GetItem(int position) 
    { 
     return position; 
    } 

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

    public override View GetView(int position, View convertView, ViewGroup parent) 
    { 
     View view = convertView; 
     if (view == null) 
      view = context.LayoutInflater.Inflate(R.Layout.gallery_item_layout, null); 

     view.FindViewById<ImageView>(R.Id.gitemImage).SetImageBitmap(BitmapFactory.DecodeFile(filePath[position])); 
     view.FindViewById<TextView>(R.Id.gitemText).Text = fileName[position]; 

     return view; 

    } 
} 

Irgendwelche Ideen, wo ich falsch gehe? Ich benutze derzeit ein LG G3 als Debug-Gerät, wenn dies hilft. Vielen Dank für jede Hilfe im Voraus.

Antwort

0

Sie haben eine Nullzählung für Ihren Grid-Adapter zurückgegeben.

ändern

public override int Count { get; }

Um

public override int Count 
{ 
     get { return filePath.Length; } 
} 
+0

Dank ich mich, dass vermisste kann nicht glauben! –

Verwandte Themen