com.kccomy.orgar.adapter.SimpleTreeAdapter.java Source code

Java tutorial

Introduction

Here is the source code for com.kccomy.orgar.adapter.SimpleTreeAdapter.java

Source

/*
 * Copyright (C) 2016. kccomy, Orgar
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *        http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.kccomy.orgar.adapter;

import android.content.Context;
import android.text.TextPaint;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;

import com.kccomy.orgar.R;
import com.kccomy.orgar.module.TreeNode;

import org.cowboyprogrammer.org.OrgTimestamp;
import org.joda.time.LocalDateTime;

import butterknife.BindView;
import butterknife.ButterKnife;

public class SimpleTreeAdapter extends TreeListViewAdapter {

    private static final String TAG = "SimpleTreeAdapter";

    public SimpleTreeAdapter(ListView tree, Context context) {
        this(tree, context, 1);
    }

    public SimpleTreeAdapter(ListView tree, Context context, int defaultExpandLevel) {
        super(tree, context, defaultExpandLevel);
    }

    @Override
    public View getConvertView(final TreeNode treeNode, int position, View convertView, ViewGroup parent) {

        TreeViewHolder treeViewHolder;

        if (convertView == null) {
            convertView = inflater.inflate(R.layout.item_tree, parent, false);
            treeViewHolder = new TreeViewHolder(convertView);
            convertView.setTag(treeViewHolder);
        } else {
            treeViewHolder = (TreeViewHolder) convertView.getTag();
        }

        //Hide root node
        if (position == 0) {
            convertView.setVisibility(View.GONE);
        } else {
            convertView.setVisibility(View.VISIBLE);
        }

        if (treeNode.getIcon() == -1) {
            treeViewHolder.nodeIcon.setVisibility(View.INVISIBLE);
        } else {
            treeViewHolder.nodeIcon.setVisibility(View.VISIBLE);
            treeViewHolder.nodeIcon.setImageResource(treeNode.getIcon());
        }

        String todo = treeNode.getTodo();

        if (todo != null) {
            treeViewHolder.todoText.setText(todo);
            TextPaint paint = treeViewHolder.todoText.getPaint();
            paint.setFakeBoldText(true);
        } else {
            treeViewHolder.todoText.setVisibility(View.GONE);
        }

        treeViewHolder.priorityText.setVisibility(View.GONE);

        treeViewHolder.headerText.setText(treeNode.getHeader());

        String body = treeNode.getBody();

        if (body != null) {
            treeViewHolder.bodyText.setText(body);
        } else {
            treeViewHolder.bodyText.setVisibility(View.GONE);
        }

        String deadline = null;
        LocalDateTime deadlineDate = treeNode.getTimestamp(OrgTimestamp.Type.DEADLINE);

        if (deadlineDate != null) {
            deadline = deadlineDate.toString("HH:mm");
        }

        if (deadline != null) {
            treeViewHolder.deadlineIcon.setImageResource(R.drawable.ic_deadline_black);
            treeViewHolder.deadlineText.setText(deadline);
        } else {
            treeViewHolder.deadlineIcon.setVisibility(View.GONE);
            treeViewHolder.deadlineText.setVisibility(View.GONE);
        }

        String scheduled = null;
        LocalDateTime scheduledDate = treeNode.getTimestamp(OrgTimestamp.Type.SCHEDULED);

        if (scheduledDate != null) {
            scheduled = scheduledDate.toString("yyyy-MM-dd HH:mm");
        }

        if (scheduled != null) {
            treeViewHolder.scheduledIcon.setImageResource(R.drawable.ic_deadline_black);
            treeViewHolder.scheduledText.setText(scheduled);
        } else {
            treeViewHolder.scheduledIcon.setVisibility(View.GONE);
            treeViewHolder.scheduledText.setVisibility(View.GONE);
        }

        treeViewHolder.closedIcon.setVisibility(View.GONE);
        treeViewHolder.closedText.setVisibility(View.GONE);

        return convertView;
    }

    static class TreeViewHolder {

        @BindView(R.id.item_org_tree_img_node)
        ImageView nodeIcon;
        @BindView(R.id.item_org_tree_header_txt_todo)
        TextView todoText;
        @BindView(R.id.item_org_tree_header_txt_priority)
        TextView priorityText;
        @BindView(R.id.item_org_tree_header_txt_title)
        TextView headerText;
        @BindView(R.id.item_org_tree_deadline_img_icon)
        ImageView deadlineIcon;
        @BindView(R.id.item_org_tree_deadline_txt_date)
        TextView deadlineText;
        @BindView(R.id.item_org_tree_scheduled_img_icon)
        ImageView scheduledIcon;
        @BindView(R.id.item_org_tree_scheduled_txt_date)
        TextView scheduledText;
        @BindView(R.id.item_org_tree_closed_img_icon)
        ImageView closedIcon;
        @BindView(R.id.item_org_tree_closed_txt_date)
        TextView closedText;
        @BindView(R.id.item_org_tree_txt_body)
        TextView bodyText;

        public TreeViewHolder(View root) {
            ButterKnife.bind(this, root);
        }
    }

}