From 323b95ad7ac66ae71989069311f2b6bd3597ef76 Mon Sep 17 00:00:00 2001 From: jendib Date: Thu, 4 Dec 2014 03:41:35 +0100 Subject: [PATCH] Android: language selection --- .../docs/activity/DocumentEditActivity.java | 5 +- .../sismics/docs/adapter/LanguageAdapter.java | 91 +++++++++++++++++++ .../main/res/layout/language_list_item.xml | 15 +++ .../app/src/main/res/values/strings.xml | 3 + 4 files changed, 111 insertions(+), 3 deletions(-) create mode 100644 docs-android/app/src/main/java/com/sismics/docs/adapter/LanguageAdapter.java create mode 100644 docs-android/app/src/main/res/layout/language_list_item.xml diff --git a/docs-android/app/src/main/java/com/sismics/docs/activity/DocumentEditActivity.java b/docs-android/app/src/main/java/com/sismics/docs/activity/DocumentEditActivity.java index 5a2260a5..90b7ed53 100644 --- a/docs-android/app/src/main/java/com/sismics/docs/activity/DocumentEditActivity.java +++ b/docs-android/app/src/main/java/com/sismics/docs/activity/DocumentEditActivity.java @@ -3,10 +3,10 @@ package com.sismics.docs.activity; import android.os.Bundle; import android.support.v7.app.ActionBarActivity; import android.view.MenuItem; -import android.widget.ArrayAdapter; import android.widget.Spinner; import com.sismics.docs.R; +import com.sismics.docs.adapter.LanguageAdapter; import com.sismics.docs.adapter.TagAutoCompleteAdapter; import com.sismics.docs.ui.view.TagsCompleteTextView; import com.sismics.docs.util.PreferenceUtil; @@ -39,8 +39,7 @@ public class DocumentEditActivity extends ActionBarActivity { getSupportActionBar().setHomeButtonEnabled(true); Spinner languageSpinner = (Spinner) findViewById(R.id.languageSpinner); - languageSpinner.setAdapter(new ArrayAdapter<>(this, android.R.layout.simple_spinner_dropdown_item, - new String[] { "French", "English", "Japanese" })); + languageSpinner.setAdapter(new LanguageAdapter(this)); JSONObject tags = PreferenceUtil.getCachedJson(this, PreferenceUtil.PREF_CACHED_TAGS_JSON); if (tags == null) { diff --git a/docs-android/app/src/main/java/com/sismics/docs/adapter/LanguageAdapter.java b/docs-android/app/src/main/java/com/sismics/docs/adapter/LanguageAdapter.java new file mode 100644 index 00000000..fe0d76e1 --- /dev/null +++ b/docs-android/app/src/main/java/com/sismics/docs/adapter/LanguageAdapter.java @@ -0,0 +1,91 @@ +package com.sismics.docs.adapter; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseAdapter; +import android.widget.TextView; + +import com.sismics.docs.R; + +import java.util.ArrayList; +import java.util.List; + +/** + * Languages adapter. + * + * @author bgamard. + */ +public class LanguageAdapter extends BaseAdapter { + /** + * Context. + */ + private Context context; + + private List languageList; + + public LanguageAdapter(Context context) { + this.context = context; + this.languageList = new ArrayList<>(); + languageList.add(new Language("fra", R.string.language_french, R.drawable.fra)); + languageList.add(new Language("eng", R.string.language_english, R.drawable.eng)); + languageList.add(new Language("jpn", R.string.language_japanese, R.drawable.jpn)); + } + + @Override + public int getCount() { + return languageList.size(); + } + + @Override + public Language getItem(int position) { + if (position >= languageList.size()) { + return null; + } + return languageList.get(position); + } + + @Override + public long getItemId(int position) { + return getItem(position).id.hashCode(); + } + + @Override + public View getView(int position, View view, ViewGroup parent) { + if (view == null) { + LayoutInflater vi = (LayoutInflater) parent.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); + view = vi.inflate(R.layout.language_list_item, parent, false); + } + + // Fill the view + Language language = getItem(position); + TextView languageTextView = (TextView) view.findViewById(R.id.languageTextView); + languageTextView.setText(context.getText(language.name)); + languageTextView.setCompoundDrawablesWithIntrinsicBounds(language.drawable, 0, 0, 0); + + return view; + } + + /** + * A language. + */ + private static class Language { + private String id; + private int name; + private int drawable; + + /** + * A language. + * + * @param id Language ID + * @param name Language name + * @param drawable Language drawable + */ + public Language(String id, int name, int drawable) { + this.id = id; + this.name = name; + this.drawable = drawable; + } + } +} diff --git a/docs-android/app/src/main/res/layout/language_list_item.xml b/docs-android/app/src/main/res/layout/language_list_item.xml new file mode 100644 index 00000000..47ae6ea3 --- /dev/null +++ b/docs-android/app/src/main/res/layout/language_list_item.xml @@ -0,0 +1,15 @@ + + \ No newline at end of file diff --git a/docs-android/app/src/main/res/values/strings.xml b/docs-android/app/src/main/res/values/strings.xml index e01f5f32..07724f3a 100644 --- a/docs-android/app/src/main/res/values/strings.xml +++ b/docs-android/app/src/main/res/values/strings.xml @@ -71,6 +71,9 @@ Wipe the recent search suggestions Search history cleared Cache size + French + English + Japanese