Android Open Source - js-android-sdk File Array Adapter






From Project

Back to project page js-android-sdk.

License

The source code is released under:

GNU Lesser General Public License

If you think the Android project js-android-sdk 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

/*
 * Copyright (C) 2012-2014 Jaspersoft Corporation. All rights reserved.
 * http://community.jaspersoft.com/project/mobile-sdk-android
 *//from w  w w  . ja v  a  2  s  . c o  m
 * Unless you have purchased a commercial license agreement from Jaspersoft,
 * the following license terms apply:
 *
 * This program is part of Jaspersoft Mobile SDK for Android.
 *
 * Jaspersoft Mobile SDK is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * Jaspersoft Mobile SDK is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with Jaspersoft Mobile SDK for Android. If not, see
 * <http://www.gnu.org/licenses/lgpl>.
 */

package com.jaspersoft.android.sdk.ui.adapters;

import android.content.Context;
import android.graphics.drawable.Drawable;
import android.text.format.DateUtils;
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.jaspersoft.android.sdk.ui.R;
import com.jaspersoft.android.sdk.util.FileUtils;

import java.io.File;
import java.util.Arrays;
import java.util.EnumMap;
import java.util.List;

/**
 * A concrete ArrayAdapter that is backed by an array of File objects.
 *
 * @author Ivan Gadzhega
 * @since 1.8
 */
public class FileArrayAdapter extends ArrayAdapter<File> {

    private LayoutInfo layoutInfo;
    private EnumMap<FileType, Integer> drawableIdsMap;

    @Deprecated
    public FileArrayAdapter(Context context, File[] files) {
        this(context, Arrays.asList(files));
    }

    public FileArrayAdapter(Context context, LayoutInfo layoutInfo, File[] files) {
        this(context, layoutInfo, Arrays.asList(files));
    }

    public FileArrayAdapter(Context context, LayoutInfo layoutInfo,
                            EnumMap<FileType,Integer> drawableIdsMap, File[] files) {
        this(context, layoutInfo, drawableIdsMap, Arrays.asList(files));
    }

    @Deprecated
    public FileArrayAdapter(Context context, List<File> files) {
        this(context, new LayoutInfo(R.layout.file_list_item), new EnumMap<FileType, Integer>(FileType.class), files);

        layoutInfo.setIconViewId(R.id.file_list_item_icon);
        layoutInfo.setLabelViewId(R.id.file_list_item_label);
        layoutInfo.setDateViewId(R.id.file_list_item_date);
        layoutInfo.setSizeViewId(R.id.file_list_item_size);

        drawableIdsMap.put(FileType.HTML, R.drawable.ic_type_html);
        drawableIdsMap.put(FileType.PDF, R.drawable.ic_type_pdf);
        drawableIdsMap.put(FileType.XLS, R.drawable.ic_type_xls);
        drawableIdsMap.put(FileType.UNKNOWN, R.drawable.ic_type_unknown);
    }

    public FileArrayAdapter(Context context, LayoutInfo layoutInfo, List<File> files) {
        this(context, layoutInfo, null, files);
    }

    public FileArrayAdapter(Context context, LayoutInfo layoutInfo,
                            EnumMap<FileType, Integer> drawableIdsMap, List<File> files) {
        super(context, layoutInfo.layoutResId, files);
        this.layoutInfo = layoutInfo;
        this.drawableIdsMap = drawableIdsMap;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        File file = getItem(position);

        // reuse views
        View rowView = convertView;
        if (rowView == null) {
            LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            rowView = inflater.inflate(layoutInfo.getLayoutResId(), parent, false);
            // configure view holder
            ViewHolder viewHolder = new ViewHolder();
            viewHolder.iconView = (ImageView) rowView.findViewById(layoutInfo.getIconViewId());
            viewHolder.labelView = (TextView) rowView.findViewById(layoutInfo.getLabelViewId());
            viewHolder.dateView = (TextView) rowView.findViewById(layoutInfo.getDateViewId());
            viewHolder.sizeView = (TextView) rowView.findViewById(layoutInfo.getSizeViewId());
            rowView.setTag(viewHolder);
        }
        // fill data
        ViewHolder viewHolder = (ViewHolder) rowView.getTag();
        if (viewHolder.iconView != null && drawableIdsMap != null) {
            String extension = FileUtils.getExtension(file.getName());
            Drawable icon = getFileIconByExtension(extension);
            viewHolder.iconView.setImageDrawable(icon);
        }
        if (viewHolder.labelView != null) {
            String baseName = FileUtils.getBaseName(file.getName());
            viewHolder.labelView.setText(baseName);
        }
        if (viewHolder.dateView != null) {
            String dateModified = getFormattedDateModified(file);
            viewHolder.dateView.setText(dateModified);
        }
        if (viewHolder.sizeView != null) {
            String size = getHumanReadableFileSize(file);
            viewHolder.sizeView.setText(size);
        }

        // return configured view
        return rowView;
    }

    //---------------------------------------------------------------------
    // Helper methods
    //---------------------------------------------------------------------

    private Drawable getFileIconByExtension(String extension) {
        FileType type = getFileTypeByExtension(extension);
        int drawableResId = drawableIdsMap.get(type);
        return getContext().getResources().getDrawable(drawableResId);
    }

    private FileType getFileTypeByExtension(String extension) {
        try {
            return FileType.valueOf(extension);
        } catch (IllegalArgumentException ex) {
            return FileType.UNKNOWN;
        }
    }

    private String getFormattedDateModified(File file) {
        return DateUtils.formatDateTime(getContext(), file.lastModified(),
                                        DateUtils.FORMAT_SHOW_DATE |
                                        DateUtils.FORMAT_SHOW_TIME |
                                        DateUtils.FORMAT_SHOW_YEAR |
                                        DateUtils.FORMAT_NUMERIC_DATE |
                                        DateUtils.FORMAT_24HOUR
        );
    }

    private String getHumanReadableFileSize(File file) {
        long bytes = FileUtils.calculateFileSize(file);
        return FileUtils.getHumanReadableByteCount(bytes);
    }

    //---------------------------------------------------------------------
    // Nested Classes
    //---------------------------------------------------------------------

    public enum FileType {
        HTML,
        PDF,
        XLS,
        UNKNOWN
    }

    public static class LayoutInfo {
        private int layoutResId;
        private int iconViewId;
        private int labelViewId;
        private int dateViewId;
        private int sizeViewId;

        public LayoutInfo(int layoutResId) {
            this.layoutResId = layoutResId;
        }

        public int getLayoutResId() {
            return layoutResId;
        }

        public int getIconViewId() {
            return iconViewId;
        }

        public void setIconViewId(int iconViewId) {
            this.iconViewId = iconViewId;
        }

        public int getLabelViewId() {
            return labelViewId;
        }

        public void setLabelViewId(int labelViewId) {
            this.labelViewId = labelViewId;
        }

        public int getDateViewId() {
            return dateViewId;
        }

        public void setDateViewId(int dateViewId) {
            this.dateViewId = dateViewId;
        }

        public int getSizeViewId() {
            return sizeViewId;
        }

        public void setSizeViewId(int sizeViewId) {
            this.sizeViewId = sizeViewId;
        }
    }

    private static class ViewHolder {
        private ImageView iconView;
        private TextView labelView;
        private TextView dateView;
        private TextView sizeView;
    }

}




Java Source Code List

com.jaspersoft.android.sdk.client.JsRestClient.java
com.jaspersoft.android.sdk.client.JsServerProfile.java
com.jaspersoft.android.sdk.client.async.JsAsyncTaskManager.java
com.jaspersoft.android.sdk.client.async.JsOnTaskCallbackListener.java
com.jaspersoft.android.sdk.client.async.JsProgressTracker.java
com.jaspersoft.android.sdk.client.async.JsXmlSpiceService.java
com.jaspersoft.android.sdk.client.async.request.BaseRequest.java
com.jaspersoft.android.sdk.client.async.request.CheckReportStatusRequest.java
com.jaspersoft.android.sdk.client.async.request.DeleteResourceRequest.java
com.jaspersoft.android.sdk.client.async.request.GetRootFolderDataRequest.java
com.jaspersoft.android.sdk.client.async.request.ModifyResourceRequest.java
com.jaspersoft.android.sdk.client.async.request.ReportDetailsRequest.java
com.jaspersoft.android.sdk.client.async.request.RunReportExecutionRequest.java
com.jaspersoft.android.sdk.client.async.request.RunReportExportOutputRequest.java
com.jaspersoft.android.sdk.client.async.request.RunReportExportsRequest.java
com.jaspersoft.android.sdk.client.async.request.SaveExportAttachmentRequest.java
com.jaspersoft.android.sdk.client.async.request.SaveExportOutputRequest.java
com.jaspersoft.android.sdk.client.async.request.SaveReportAttachmentRequest.java
com.jaspersoft.android.sdk.client.async.request.SaveReportAttachmentsRequest.java
com.jaspersoft.android.sdk.client.async.request.cacheable.BaseInputControlsRequest.java
com.jaspersoft.android.sdk.client.async.request.cacheable.CacheableRequest.java
com.jaspersoft.android.sdk.client.async.request.cacheable.GetInputControlsRequest.java
com.jaspersoft.android.sdk.client.async.request.cacheable.GetInputControlsValuesRequest.java
com.jaspersoft.android.sdk.client.async.request.cacheable.GetReportRequest.java
com.jaspersoft.android.sdk.client.async.request.cacheable.GetResourceLookupsRequest.java
com.jaspersoft.android.sdk.client.async.request.cacheable.GetResourceRequest.java
com.jaspersoft.android.sdk.client.async.request.cacheable.GetResourcesRequest.java
com.jaspersoft.android.sdk.client.async.request.cacheable.GetServerInfoRequest.java
com.jaspersoft.android.sdk.client.async.request.cacheable.SearchResourcesRequest.java
com.jaspersoft.android.sdk.client.async.request.cacheable.ValidateInputControlsValuesRequest.java
com.jaspersoft.android.sdk.client.async.task.DeleteResourceAsyncTask.java
com.jaspersoft.android.sdk.client.async.task.GetInputControlsAsyncTask.java
com.jaspersoft.android.sdk.client.async.task.GetReportAsyncTask.java
com.jaspersoft.android.sdk.client.async.task.GetResourceAsyncTask.java
com.jaspersoft.android.sdk.client.async.task.GetResourcesListAsyncTask.java
com.jaspersoft.android.sdk.client.async.task.GetServerInfoAsyncTask.java
com.jaspersoft.android.sdk.client.async.task.JsAsyncTask.java
com.jaspersoft.android.sdk.client.async.task.JsRestAsyncTask.java
com.jaspersoft.android.sdk.client.async.task.ModifyResourceAsyncTask.java
com.jaspersoft.android.sdk.client.async.task.SaveReportAttachmentAsyncTask.java
com.jaspersoft.android.sdk.client.async.task.SaveReportAttachmentsAsyncTask.java
com.jaspersoft.android.sdk.client.async.task.SearchResourcesAsyncTask.java
com.jaspersoft.android.sdk.client.ic.InputControlWrapper.java
com.jaspersoft.android.sdk.client.oxm.ReportAttachment.java
com.jaspersoft.android.sdk.client.oxm.ReportDescriptor.java
com.jaspersoft.android.sdk.client.oxm.ResourceDescriptor.java
com.jaspersoft.android.sdk.client.oxm.ResourceParameter.java
com.jaspersoft.android.sdk.client.oxm.ResourceProperty.java
com.jaspersoft.android.sdk.client.oxm.ResourcesList.java
com.jaspersoft.android.sdk.client.oxm.control.InputControlOption.java
com.jaspersoft.android.sdk.client.oxm.control.InputControlState.java
com.jaspersoft.android.sdk.client.oxm.control.InputControlStatesList.java
com.jaspersoft.android.sdk.client.oxm.control.InputControl.java
com.jaspersoft.android.sdk.client.oxm.control.InputControlsList.java
com.jaspersoft.android.sdk.client.oxm.control.validation.DateTimeFormatValidationRule.java
com.jaspersoft.android.sdk.client.oxm.control.validation.MandatoryValidationRule.java
com.jaspersoft.android.sdk.client.oxm.control.validation.ValidationRule.java
com.jaspersoft.android.sdk.client.oxm.control.validation.ValidationRulesList.java
com.jaspersoft.android.sdk.client.oxm.converter.ReportStatusConverter.java
com.jaspersoft.android.sdk.client.oxm.report.ErrorDescriptor.java
com.jaspersoft.android.sdk.client.oxm.report.ExecutionRequest.java
com.jaspersoft.android.sdk.client.oxm.report.ExportExecution.java
com.jaspersoft.android.sdk.client.oxm.report.ExportsRequest.java
com.jaspersoft.android.sdk.client.oxm.report.FolderDataResponse.java
com.jaspersoft.android.sdk.client.oxm.report.ReportDataResponse.java
com.jaspersoft.android.sdk.client.oxm.report.ReportExecutionRequest.java
com.jaspersoft.android.sdk.client.oxm.report.ReportExecutionResponse.java
com.jaspersoft.android.sdk.client.oxm.report.ReportOutputResource.java
com.jaspersoft.android.sdk.client.oxm.report.ReportParameter.java
com.jaspersoft.android.sdk.client.oxm.report.ReportParametersList.java
com.jaspersoft.android.sdk.client.oxm.report.ReportStatusResponse.java
com.jaspersoft.android.sdk.client.oxm.report.ReportStatus.java
com.jaspersoft.android.sdk.client.oxm.resource.ResourceLookupSearchCriteria.java
com.jaspersoft.android.sdk.client.oxm.resource.ResourceLookup.java
com.jaspersoft.android.sdk.client.oxm.resource.ResourceLookupsList.java
com.jaspersoft.android.sdk.client.oxm.server.ServerInfo.java
com.jaspersoft.android.sdk.integration.CheckReportStatusRequestTest.java
com.jaspersoft.android.sdk.integration.GetRootFolderDataRequestTest.java
com.jaspersoft.android.sdk.integration.ReportDetailsRequestTest.java
com.jaspersoft.android.sdk.integration.RunReportExportsRequestTest.java
com.jaspersoft.android.sdk.integration.utils.ProtoInstrumentation.java
com.jaspersoft.android.sdk.integration.utils.SampleData.java
com.jaspersoft.android.sdk.ui.adapters.FileArrayAdapter.java
com.jaspersoft.android.sdk.ui.adapters.ResourceDescriptorArrayAdapter.java
com.jaspersoft.android.sdk.ui.adapters.ResourceDescriptorComparator.java
com.jaspersoft.android.sdk.ui.adapters.ResourceLookupArrayAdapter.java
com.jaspersoft.android.sdk.ui.adapters.ResourceLookupComparator.java
com.jaspersoft.android.sdk.ui.adapters.ResourceLookupEndlessAdapter.java
com.jaspersoft.android.sdk.ui.adapters.ResourcePropertyArrayAdapter.java
com.jaspersoft.android.sdk.ui.widget.MultiSelectSpinner.java
com.jaspersoft.android.sdk.util.CookieHttpRequestInterceptor.java
com.jaspersoft.android.sdk.util.FileUtils.java
com.jaspersoft.android.sdk.util.KeepAliveHttpRequestInterceptor.java
com.jaspersoft.android.sdk.util.LocalesHttpRequestInterceptor.java
com.jaspersoft.android.sdk.util.StaticCacheHelper.java