From 6fdb1a4b8f2fa07cabc742d71048e8f5ecfdaac8 Mon Sep 17 00:00:00 2001 From: "David A. Madore" Date: Mon, 26 Apr 2010 18:47:42 +0200 Subject: Restructure deeply: now we have a single activity, with a dedicated adapter. The UnicodeArrayAdapter displays a list of UnicodeDisplayable, which can be either UnicodeCharacter or UnicodeCharacter.Range, and provides appropriate views for either one. Rather than changing activity, we change the ListAdapter. To simulate an activity stack, we capture the back key. --- .../android/unicodeMap/UnicodeArrayAdapter.java | 65 ++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 src/org/madore/android/unicodeMap/UnicodeArrayAdapter.java (limited to 'src/org/madore/android/unicodeMap/UnicodeArrayAdapter.java') diff --git a/src/org/madore/android/unicodeMap/UnicodeArrayAdapter.java b/src/org/madore/android/unicodeMap/UnicodeArrayAdapter.java new file mode 100644 index 0000000..691d525 --- /dev/null +++ b/src/org/madore/android/unicodeMap/UnicodeArrayAdapter.java @@ -0,0 +1,65 @@ +package org.madore.android.unicodeMap; + +import java.util.List; +import android.content.Context; +import android.view.View; +import android.view.ViewGroup; +import android.view.LayoutInflater; +import android.widget.ArrayAdapter; +import android.widget.TextView; + +public class UnicodeArrayAdapter + extends ArrayAdapter { + + protected Context context; + protected LayoutInflater inflater; + + public UnicodeArrayAdapter(Context context) { + super(context, 0); + this.context = context; + this.inflater + = (LayoutInflater)context + .getSystemService(Context.LAYOUT_INFLATER_SERVICE); + } + + public UnicodeArrayAdapter(Context context, + List objects) { + super(context, 0, objects); + this.context = context; + this.inflater + = (LayoutInflater)context + .getSystemService(Context.LAYOUT_INFLATER_SERVICE); + } + + public View getView(int position, View convertView, ViewGroup parent) { + UnicodeDisplayable item = this.getItem(position); + View view = null; + if ( item instanceof UnicodeCharacter ) { + View charTextView = null; View labelTextView = null; + if ( convertView != null ) { + charTextView = convertView.findViewById(R.id.charText); + labelTextView = convertView.findViewById(R.id.labelText); + if ( charTextView != null && labelTextView != null ) + view = convertView; + } + if ( view == null ) { + view = inflater.inflate(R.layout.char_item, parent, false); + charTextView = view.findViewById(R.id.charText); + labelTextView = view.findViewById(R.id.labelText); + } + ((TextView)charTextView).setText(((UnicodeCharacter)item).getChar()); + ((TextView)labelTextView).setText(((UnicodeCharacter)item).getLabel()); + } else if ( item instanceof UnicodeCharacter.Range ) { + if ( convertView != null + && convertView instanceof TextView ) { + view = convertView; + } + if ( view == null ) + view = inflater.inflate(R.layout.range_item, parent, false); + ((TextView)view).setText(((UnicodeCharacter.Range)item).getDescr()); + } else + throw new AssertionError("unknown UnicodeDisplayable"); + return view; + } + +} -- cgit v1.2.3