summaryrefslogtreecommitdiffstats
path: root/src/org/madore/android/unicodeMap/UnicodeArrayAdapter.java
diff options
context:
space:
mode:
authorDavid A. Madore <david+git@madore.org>2010-04-26 18:47:42 +0200
committerDavid A. Madore <david+git@madore.org>2010-04-26 18:47:42 +0200
commit6fdb1a4b8f2fa07cabc742d71048e8f5ecfdaac8 (patch)
tree50b7021410c791b6f8888f9df2946b743e592871 /src/org/madore/android/unicodeMap/UnicodeArrayAdapter.java
parentdfccb7883425392290f5bf9afc845bae776320e9 (diff)
downloadUnicodeMap-6fdb1a4b8f2fa07cabc742d71048e8f5ecfdaac8.tar.gz
UnicodeMap-6fdb1a4b8f2fa07cabc742d71048e8f5ecfdaac8.tar.bz2
UnicodeMap-6fdb1a4b8f2fa07cabc742d71048e8f5ecfdaac8.zip
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.
Diffstat (limited to 'src/org/madore/android/unicodeMap/UnicodeArrayAdapter.java')
-rw-r--r--src/org/madore/android/unicodeMap/UnicodeArrayAdapter.java65
1 files changed, 65 insertions, 0 deletions
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<UnicodeDisplayable> {
+
+ 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<UnicodeDisplayable> 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;
+ }
+
+}