package cn.alphabets.light.ui; import android.content.Context; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.ImageView; import android.widget.ProgressBar; import android.widget.TextView; import org.apache.commons.io.FilenameUtils; import java.io.File; import java.io.Serializable; import cn.alphabets.light.R; /** * Created by sh on 15/1/28. */ public class FileAdapter extends ArrayAdapter<FileAdapter.FileItem> { public static class FileItem implements Serializable { File file; String fileUrl; String fileName; public FileItem(String fileName, String fileUrl) { this.fileName = fileName; this.fileUrl = fileUrl; } public FileItem(String fileName, String fileUrl, File file) { this(fileName, fileUrl); this.file = file; } } public FileAdapter(Context context, int resource) { super(context, resource); } @Override public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) { convertView = View.inflate(getContext(), R.layout.activity_file_item, null); } final FileItem item = getItem(position); //显示文件名 { TextView fileName = (TextView) convertView.findViewById(R.id.file_name); fileName.setText(item.fileName); } final ProgressBar loading = (ProgressBar) convertView.findViewById(R.id.loading); //下载完成显示放大镜,未下载显示下载icon { final ImageView downloadOrView = (ImageView) convertView.findViewById(R.id.download_view); if (item.file == null) { downloadOrView.setImageDrawable(getContext().getResources().getDrawable(R.drawable.icon_download)); } else { downloadOrView.setImageDrawable(getContext().getResources().getDrawable(R.drawable.icon_view)); } } //根据文件后缀显示相应的icon { final String fileEnding = FilenameUtils.getExtension(item.fileName); int ft_res = getContext().getResources().getIdentifier("ft_" + fileEnding, "drawable", getContext().getPackageName()); if (ft_res <= 0) { ft_res = R.drawable.ft_default; } ((ImageView) convertView.findViewById(R.id.file_type_icon)).setImageDrawable(getContext().getResources().getDrawable(ft_res)); } return convertView; } /** * 文件下载回调 */ public interface LoadFileListener { public void onResult(File file); } }