If you think the Android project AndroIUT listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
Java Source Code
package com.iutdijon.androiut2.ftp.adapters;
/*fromwww.java2s.com*/import org.apache.commons.net.ftp.FTPFile;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import com.iutdijon.androiut2.R;
/**
* Permet de faire le lien entre la repr?sentation m?moire des fichiers pr?sents dans le dossier actuel
* vers la liste d'affichage de la vue.
* Elle rajoute un fichier ? la liste qui est le fichier ".." correspondant au fichier parent et permettant ainsi
* de remonter dans l'arborescence du FTP.
* @author Morgan Funtowicz
*
*/publicclass FTPFileListAdapter extends ArrayAdapter<FTPFile> {
privatefinal LayoutInflater inflater;
private FTPFile[] files_with_back;
public FTPFileListAdapter(Context context, int textViewResourceID, FTPFile[] files) {
super(context, textViewResourceID, files);
inflater = LayoutInflater.from(context);
files_with_back = addBackFile(files);
setNotifyOnChange(true);
}
/**
* Ajoute le fichier ".." ? la liste des fichiers du dossier actuel
* @param tab Le tableau de fichiers sur le serveur
* @return un tableau de {@link FTPFile} contenant tab.length + 1 entr?es
*/private FTPFile[] addBackFile(FTPFile[] tab){
FTPFile[] files = new FTPFile[tab.length+1];
FTPFile gotoParent = new FTPFile();
gotoParent.setName("..");
gotoParent.setType(FTPFile.DIRECTORY_TYPE);
files[0] = gotoParent;
System.arraycopy(tab, 0, files, 1, tab.length);
return files;
}
/**
* Permet de mettre ? jour les donn?es de la liste sans avoir ? r?cr?er un adaptateur.
* @param files Un tableau de {@link FTPFile} correspondant ? la repr?sentation du dossier nouvellement consult?
*/publicvoid updateFileList(FTPFile[] files){
this.files_with_back = addBackFile(files);
notifyDataSetChanged();
}
@Override
publicint getCount() {
return files_with_back.length;
}
@Override
public FTPFile getItem(int position) {
return files_with_back[position];
}
@Override
publiclong getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if(convertView == null){
holder = new ViewHolder();
convertView = inflater.inflate(R.layout.ftp_list_item, null);
holder.fileName = (TextView) convertView.findViewById(R.id.ftp_list_item_name);
holder.type = (ImageView) convertView.findViewById(R.id.list_image);
convertView.setTag(holder);
}else{
holder = (ViewHolder) convertView.getTag();
}
holder.fileName.setText((files_with_back[position].getName()));
holder.type.setBackgroundResource(files_with_back[position].isDirectory() ? R.drawable.collections_collection : R.drawable.collections_view_as_list);
return convertView;
}
/**
* Classe agissant comme cache de l'affichage d'un ?l?ment de la liste
* afin d'am?liorer les performances du service.
* @author Morgan Funtowicz
*
*/privateclass ViewHolder{
public ImageView type;
public TextView fileName;
}
}