FolderAdapter.java :  » Camera » camalert » com » elektronikforumet » camalert » Android Open Source

Android Open Source » Camera » camalert 
camalert » com » elektronikforumet » camalert » FolderAdapter.java
package com.elektronikforumet.camalert;

import java.io.File;
import java.io.FileFilter;

import android.content.Context;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.BaseAdapter;
import android.widget.ListAdapter;

public class FolderAdapter extends BaseAdapter implements ListAdapter, OnClickListener {

  private Context mCtx = null;
  private File[] mFiles = null;
  private File mFolder = null;
  private String mFileType = "";
  private OnFileSelectedListener mOnFileSelectedListener = null;
  
  public FolderAdapter(Context ctx, File folder, String fileType) {
    mCtx = ctx;
    mFileType = fileType;
    
    try {
    setFolder(folder);
    } catch(Exception ex) {
      Log.d("CamAlert", "error error!", ex);
    }
  }
  
  public void setFolder(File folder) /* throws Exception */ {
    //if(!folder.isDirectory()) {
    //  throw new Exception("Must be folder!");
    //}
    
    mFolder = folder;
    
    mFiles = folder.listFiles( new FileFilter() {
      
      @Override
      public boolean accept(File pathname) {
        return pathname.isDirectory() || pathname.getName().endsWith(mFileType);
      }
    });
    
    notifyDataSetChanged();
  }
  
  @Override
  public int getCount() {
    return mFiles.length+1;
  }

  @Override
  public Object getItem(int position) {
    return mFiles[position];
  }

  @Override
  public long getItemId(int position) {
    // No problem with id 0
    return (long)position;
  }

  @Override
  public View getView(int position, View convertView, ViewGroup parent) {
    FileView fileView = null;
    
    if(convertView == null) {
      if(position == 0) {
        fileView = new FileView(mCtx, mFolder, true);
      } else {
        fileView = new FileView(mCtx, mFiles[position-1], false);
      }
      fileView.setOnClickListener(this);
    } else {
      fileView = (FileView)convertView;
      if(position == 0) {
        fileView.setFile(mFolder, true);
      } else {
        fileView.setFile(mFiles[position-1], false);
      }
    }
    
    return fileView;    
  }

  @Override
  public void onClick(View v) {
    FileView fv = (FileView)v;
    File f = fv.getFile();
    
    if(fv.getUp()) {
      setFolder(f.getParentFile());
    } else if(f.isDirectory()) {
      setFolder(f);
    } else {
      if(mOnFileSelectedListener != null) {
        mOnFileSelectedListener.onFileSelected(f);
      }
    }
    
    
  }
  
  public void setOnFileSelectedListener(OnFileSelectedListener listener) {
    mOnFileSelectedListener = listener;
  }
  
  public interface OnFileSelectedListener {
    void onFileSelected(File file);
  }

}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.