Android Open Source - unicef_gis_mobile Report Row Adapter






From Project

Back to project page unicef_gis_mobile.

License

The source code is released under:

MIT License

If you think the Android project unicef_gis_mobile 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 org.unicef.gis.ui.report;
//w w w. j  av  a 2 s . c  om
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

import org.unicef.gis.R;
import org.unicef.gis.infrastructure.image.AsyncDrawable;
import org.unicef.gis.infrastructure.image.BitmapWorkerTask;
import org.unicef.gis.infrastructure.image.Camera;
import org.unicef.gis.model.Report;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.content.res.Resources;
import android.net.Uri;
import android.text.format.DateFormat;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class ReportRowAdapter extends ArrayAdapter<Report> {
  private LayoutInflater inflater; 
  
  private static final int THUMBNAIL_TO_SCREEN_FACTOR = 16;
  private final Camera camera;
  private final int layout;  

  public ReportRowAdapter(Activity context, int layout) {    
    super(context, layout);
    this.layout = layout;
    this.camera = new Camera(context);
    
    inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
  }

  @Override
  public View getView(int position, View convertView, ViewGroup parent) {
    View view;
    
    if (convertView == null) {
      view = inflater.inflate(layout, parent, false);
    } else {
      view = convertView;
    }
    
    Report report = getItem(position);
  
    ImageView thumbnailView = (ImageView) view.findViewById(R.id.row_report_thumbnail);
    TextView descriptionView = (TextView) view.findViewById(R.id.row_report_description);
    TextView timestampView = (TextView) view.findViewById(R.id.row_report_date_time);
    TextView syncedView = (TextView) view.findViewById(R.id.row_report_synced);

    Uri imageUri = Uri.parse(report.getImageUri());
    String description = report.getTitle();
    String timestamp = report.getTimestamp();
    boolean synced = report.getSyncedImage();

    asyncLoadThumbnail(thumbnailView, imageUri);
    descriptionView.setText(description);
    timestampView.setText(formatTimestamp(timestamp));
    syncedView.setText(synced ? "Uploaded" : "");
    
    return view;
  }

  @SuppressLint("SimpleDateFormat")
  private CharSequence formatTimestamp(String timestamp) {
        String s = timestamp.replace("Z", "+00:00");
        
        try {
            s = s.substring(0, 22) + s.substring(23);
            Date date = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ").parse(s);                                 
            return DateFormat.format("MM/dd/yyyy, kk:mm", date);
        } catch (IndexOutOfBoundsException e) {
          Log.d("ReportRowAdapter", "Invalid timestamp: " + timestamp);            
        } catch (ParseException e) {
      Log.d("ReportRowAdapter", "Invalid timestamp: " + timestamp);      
    }
        
        return "invalid date";
  }

  private void asyncLoadThumbnail(ImageView thumbnailView, Uri imageUri) {
    if (cancelPotentialWork(thumbnailView, imageUri)) {
      final BitmapWorkerTask task = new BitmapWorkerTask(camera,
          THUMBNAIL_TO_SCREEN_FACTOR, thumbnailView);
      final AsyncDrawable asyncDrawable = new AsyncDrawable(Resources.getSystem(), camera.getPlaceholder(), task);
      thumbnailView.setImageDrawable(asyncDrawable);
      task.execute(imageUri);
    }
  }

  private boolean cancelPotentialWork(ImageView thumbnailView, Uri imageUri) {
    final BitmapWorkerTask bitmapWorkerTask = BitmapWorkerTask
        .getBitmapWorkerTask(thumbnailView);

    if (bitmapWorkerTask != null) {
      final Uri taskUri = bitmapWorkerTask.getImageUri();
      if (!taskUri.equals(imageUri)) {
        bitmapWorkerTask.cancel(true);
      } else {
        return false;
      }
    }

    return true;
  }
}




Java Source Code List

com.couchbase.cblite.ektorp.CBLiteHttpClient.java
com.couchbase.cblite.ektorp.CBLiteHttpResponse.java
edu.mit.mobile.android.utils.StreamUtils.java
org.unicef.gis.auth.AuthenticatorService.java
org.unicef.gis.auth.Authenticator.java
org.unicef.gis.infrastructure.CompileTimeSettings.java
org.unicef.gis.infrastructure.ILocationServiceConsumer.java
org.unicef.gis.infrastructure.LocationService.java
org.unicef.gis.infrastructure.Network.java
org.unicef.gis.infrastructure.Notificator.java
org.unicef.gis.infrastructure.RoutesResolver.java
org.unicef.gis.infrastructure.ServerUrlPreferenceNotSetException.java
org.unicef.gis.infrastructure.UnicefGisApi.java
org.unicef.gis.infrastructure.data.CouchDbLiteStoreAdapter.java
org.unicef.gis.infrastructure.data.UnicefGisContentProvider.java
org.unicef.gis.infrastructure.data.UnicefGisStore.java
org.unicef.gis.infrastructure.image.AsyncDrawable.java
org.unicef.gis.infrastructure.image.BitmapWorkerTask.java
org.unicef.gis.infrastructure.image.Camera.java
org.unicef.gis.model.Report.java
org.unicef.gis.model.Tag.java
org.unicef.gis.model.couchdb.NullReduce.java
org.unicef.gis.model.couchdb.ReportLoader.java
org.unicef.gis.model.couchdb.views.AllReportsByTimestampDesc.java
org.unicef.gis.model.couchdb.views.PendingSyncReports.java
org.unicef.gis.model.couchdb.views.UnicefGisView.java
org.unicef.gis.model.couchdb.views.UploadedReports.java
org.unicef.gis.sync.SyncAdapter.java
org.unicef.gis.sync.SyncService.java
org.unicef.gis.ui.AlertDialogFragment.java
org.unicef.gis.ui.AuthenticatorActivity.java
org.unicef.gis.ui.ConfigureServerUrlActivity.java
org.unicef.gis.ui.DeleteUploadedReportsTask.java
org.unicef.gis.ui.FetchTagsActivity.java
org.unicef.gis.ui.FetchTagsTask.java
org.unicef.gis.ui.MyReportsActivity.java
org.unicef.gis.ui.SettingsActivity.java
org.unicef.gis.ui.SettingsFragment.java
org.unicef.gis.ui.report.ChooseTagsFragment.java
org.unicef.gis.ui.report.CreateReportActivityConstants.java
org.unicef.gis.ui.report.CreateReportActivity.java
org.unicef.gis.ui.report.GetTagsTaskFragment.java
org.unicef.gis.ui.report.GetTagsTask.java
org.unicef.gis.ui.report.IChooseTagsCallbacks.java
org.unicef.gis.ui.report.IGetTagsCallback.java
org.unicef.gis.ui.report.IGetTagsTaskFragmentCallbacks.java
org.unicef.gis.ui.report.IReportSummaryCallbacks.java
org.unicef.gis.ui.report.ReportRowAdapter.java
org.unicef.gis.ui.report.ReportSummaryFragment.java
org.unicef.gis.ui.report.ReportViewModel.java
org.unicef.gis.ui.report.ToggleTagAdapter.java