Java tutorial
/* * 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); } } }