com.amsterdam.marktbureau.makkelijkemarkt.adapters.DagvergunningenAdapter.java Source code

Java tutorial

Introduction

Here is the source code for com.amsterdam.marktbureau.makkelijkemarkt.adapters.DagvergunningenAdapter.java

Source

/**
 * Copyright (C) 2016 X Gemeente
 *                    X Amsterdam
 *                    X Onderzoek, Informatie en Statistiek
 *
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/
 */
package com.amsterdam.marktbureau.makkelijkemarkt.adapters;

import android.content.Context;
import android.database.Cursor;
import android.support.v4.content.ContextCompat;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CursorAdapter;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;

import com.amsterdam.marktbureau.makkelijkemarkt.R;
import com.amsterdam.marktbureau.makkelijkemarkt.Utility;
import com.amsterdam.marktbureau.makkelijkemarkt.data.MakkelijkeMarktProvider;
import com.bumptech.glide.Glide;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

import butterknife.Bind;
import butterknife.ButterKnife;

/**
 *
 * @author marcolangebeeke
 */
public class DagvergunningenAdapter extends CursorAdapter {

    // use classname when logging
    private static final String LOG_TAG = DagvergunningenAdapter.class.getSimpleName();

    /**
     * Constructor
     * @param context
     */
    public DagvergunningenAdapter(Context context) {
        super(context, null, 0);
    }

    /**
     * Inflate the dagvergunningen_list_item view and attach the viewholder for easy referencing
     * @param context
     * @param cursor
     * @param parent
     * @return
     */
    @Override
    public View newView(Context context, Cursor cursor, ViewGroup parent) {

        // create a new view from the dagvergunningen_list_item definition
        View view = LayoutInflater.from(context).inflate(R.layout.dagvergunningen_list_item, parent, false);

        // set a viewholder with our view layout for the view we just created
        ViewHolder viewHolder = new ViewHolder(view);
        view.setTag(viewHolder);

        return view;
    }

    /**
     * Bind the cursor data to the view elements
     * @param view listitem view containing the elements
     * @param context the context
     * @param cursor a cursor containing the dagvergunning data
     */
    @Override
    public void bindView(View view, Context context, Cursor cursor) {
        boolean multipleDagvergunningen = false;

        // get erkenningsnummer for checking multiple dagvergunningen for the same koopman
        String erkenningsnummer = cursor.getString(
                cursor.getColumnIndex(MakkelijkeMarktProvider.Dagvergunning.COL_ERKENNINGSNUMMER_INVOER_WAARDE));

        // get current position, check for multiple dagvergunningen, and restore position again
        int position = cursor.getPosition();
        cursor.moveToFirst();
        while (!cursor.isAfterLast()) {
            if (cursor
                    .getString(cursor.getColumnIndex(
                            MakkelijkeMarktProvider.Dagvergunning.COL_ERKENNINGSNUMMER_INVOER_WAARDE))
                    .equals(erkenningsnummer) && cursor.getPosition() != position) {
                multipleDagvergunningen = true;
                break;
            }
            cursor.moveToNext();
        }
        cursor.moveToPosition(position);

        // get the viewholder layout containing the view items
        ViewHolder viewHolder = (ViewHolder) view.getTag();

        // koopman foto
        Glide.with(context.getApplicationContext())
                .load(cursor.getString(cursor.getColumnIndex(MakkelijkeMarktProvider.Koopman.COL_FOTO_URL)))
                .error(R.drawable.no_koopman_image).into(viewHolder.koopmanFoto);

        // alert !
        String koopmanStatus = cursor.getString(cursor.getColumnIndex("koopman_status"));
        if (multipleDagvergunningen
                || koopmanStatus.equals(context.getString(R.string.koopman_status_verwijderd))) {
            viewHolder.koopmanStatusText.setVisibility(View.VISIBLE);
        } else {
            viewHolder.koopmanStatusText.setVisibility(View.GONE);
        }

        // koopman naam
        String koopmanVoorletters = cursor
                .getString(cursor.getColumnIndex(MakkelijkeMarktProvider.Koopman.COL_VOORLETTERS));
        String koopmanAchternaam = cursor
                .getString(cursor.getColumnIndex(MakkelijkeMarktProvider.Koopman.COL_ACHTERNAAM));
        viewHolder.koopmanVoorlettersAchternaamText.setText(koopmanVoorletters + " " + koopmanAchternaam);

        // vervanger aanwezig
        String vervangerErkenningsnummer = cursor.getString(
                cursor.getColumnIndex(MakkelijkeMarktProvider.Dagvergunning.COL_VERVANGER_ERKENNINGSNUMMER));
        if (vervangerErkenningsnummer != null) {
            viewHolder.vervangerAanwezigText.setVisibility(View.VISIBLE);
        } else {
            viewHolder.vervangerAanwezigText.setVisibility(View.GONE);
        }

        // registratietijd
        String registratieDatumtijd = cursor
                .getString(cursor.getColumnIndex(MakkelijkeMarktProvider.Dagvergunning.COL_REGISTRATIE_DATUMTIJD));
        try {
            Date registratieDate = new SimpleDateFormat(context.getString(R.string.date_format_datumtijd),
                    Locale.getDefault()).parse(registratieDatumtijd);
            SimpleDateFormat sdf = new SimpleDateFormat(context.getString(R.string.date_format_tijd));
            String registratieTijd = sdf.format(registratieDate);
            viewHolder.dagvergunningRegistratieDatumtijdText.setText(registratieTijd);
        } catch (java.text.ParseException e) {
            viewHolder.dagvergunningRegistratieDatumtijdText.setText("");
        }

        // erkennings nummer
        viewHolder.erkenningsnummerText
                .setText(context.getString(R.string.label_erkenningsnummer) + ": " + erkenningsnummer);

        // sollicitatie nummer
        String sollicitatieNummer = cursor
                .getString(cursor.getColumnIndex(MakkelijkeMarktProvider.Sollicitatie.COL_SOLLICITATIE_NUMMER));
        if (sollicitatieNummer != null && !sollicitatieNummer.equals("")) {
            viewHolder.sollicitatieSollicitatieNummerText.setVisibility(View.VISIBLE);
            viewHolder.sollicitatieSollicitatieNummerText
                    .setText(context.getString(R.string.label_sollicitatienummer) + ": " + sollicitatieNummer);
        } else {
            // we need to clear the textview contents because listview items are recycled and may
            // therefor contain data from other dagvergunning
            viewHolder.sollicitatieSollicitatieNummerText.setVisibility(View.GONE);
            viewHolder.sollicitatieSollicitatieNummerText.setText("");
        }

        // sollicitatie status
        String sollicitatieStatus = cursor
                .getString(cursor.getColumnIndex(MakkelijkeMarktProvider.Dagvergunning.COL_STATUS_SOLLICITATIE));
        if (sollicitatieStatus != null && !sollicitatieStatus.equals("?") && !sollicitatieStatus.equals("")) {
            viewHolder.sollicitatieStatusText.setVisibility(View.VISIBLE);
            viewHolder.sollicitatieStatusText.setText(sollicitatieStatus);
            viewHolder.sollicitatieStatusText.setBackgroundColor(ContextCompat.getColor(context,
                    Utility.getSollicitatieStatusColor(context, sollicitatieStatus)));
        } else {
            viewHolder.sollicitatieStatusText.setVisibility(View.GONE);
            viewHolder.sollicitatieStatusText.setText("");
        }

        // notitie
        String notitie = cursor.getString(cursor.getColumnIndex(MakkelijkeMarktProvider.Dagvergunning.COL_NOTITIE));
        if (notitie != null && !notitie.equals("")) {
            viewHolder.notitieText.setText(context.getString(R.string.label_notitie) + ": " + notitie);
            Utility.collapseView(viewHolder.notitieText, false);
        } else {
            Utility.collapseView(viewHolder.notitieText, true);
        }

        // totale lengte
        String totaleLengte = cursor
                .getString(cursor.getColumnIndex(MakkelijkeMarktProvider.Dagvergunning.COL_TOTALE_LENGTE));
        viewHolder.dagvergunningTotaleLengteText
                .setText(totaleLengte + " " + context.getString(R.string.length_meter));

        // account naam
        String accountNaam = cursor.getString(cursor.getColumnIndex(MakkelijkeMarktProvider.Account.COL_NAAM));
        viewHolder.accountNaamText.setText(accountNaam);
    }

    /**
     * Viewholder helper class for easy referencing the view elements
     */
    public static class ViewHolder {

        // bind the elements
        @Bind(R.id.koopman_foto)
        ImageView koopmanFoto;
        @Bind(R.id.koopman_status)
        TextView koopmanStatusText;
        @Bind(R.id.koopman_naam_tijd)
        RelativeLayout koopmanNaamTijd;
        @Bind(R.id.koopman_voorletters_achternaam)
        TextView koopmanVoorlettersAchternaamText;
        @Bind(R.id.vervanger_aanwezig)
        TextView vervangerAanwezigText;
        @Bind(R.id.dagvergunning_registratie_datumtijd)
        TextView dagvergunningRegistratieDatumtijdText;
        @Bind(R.id.erkenningsnummer)
        TextView erkenningsnummerText;
        @Bind(R.id.sollicitatie_nummer_status)
        RelativeLayout sollicitatieNummerStatus;
        @Bind(R.id.sollicitatie_sollicitatie_nummer)
        TextView sollicitatieSollicitatieNummerText;
        @Bind(R.id.sollicitatie_status)
        TextView sollicitatieStatusText;
        @Bind(R.id.notitie)
        TextView notitieText;
        @Bind(R.id.totalelengte_accountnaam)
        RelativeLayout totaleLengteAccountNaam;
        @Bind(R.id.dagvergunning_totale_lente)
        TextView dagvergunningTotaleLengteText;
        @Bind(R.id.account_naam)
        TextView accountNaamText;

        /**
         * Bind the view elements using butterknife
         * @param view the listitem view
         */
        public ViewHolder(View view) {
            ButterKnife.bind(this, view);
        }
    }
}