diff options
author | David A. Madore <david+git@madore.org> | 2010-04-26 18:47:42 +0200 |
---|---|---|
committer | David A. Madore <david+git@madore.org> | 2010-04-26 18:47:42 +0200 |
commit | 6fdb1a4b8f2fa07cabc742d71048e8f5ecfdaac8 (patch) | |
tree | 50b7021410c791b6f8888f9df2946b743e592871 /src/org/madore/android/unicodeMap/UnicodeArrayAdapter.java | |
parent | dfccb7883425392290f5bf9afc845bae776320e9 (diff) | |
download | UnicodeMap-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.java | 65 |
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; + } + +} |