Android版 日蒙簡易辞書
Android版 日蒙簡易辞書
package net.hinekure.jmdic;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import android.app.Activity;import android.content.Context;import android.content.res.Resources;import android.os.Bundle;import android.widget.AdapterView;import android.widget.ArrayAdapter;import android.widget.Button;import android.widget.EditText;import android.widget.ListView;import android.widget.TextView;import android.widget.TextView.OnEditorActionListener;import android.text.ClipboardManager;import android.text.SpannableStringBuilder;import android.view.KeyEvent;import android.view.View;import android.view.View.OnClickListener;import android.view.inputmethod.InputMethodManager;public class JMDictionary extends Activity {/** Called when the activity is first created. */private Button button_ok;private Button button_cls;private EditText text;private TextView info;private ListView list;private Button_OK btok;private Button_CLS btcls;private ArrayAdapter<String> adapter;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);// 各種コンポーネントbutton_ok = (Button) this.findViewById(R.id.button1);button_cls = (Button) this.findViewById(R.id.button2);text = (EditText) this.findViewById(R.id.editText1);info = (TextView) this.findViewById(R.id.textView1);list = (ListView) this.findViewById(R.id.listView1);text.setOnEditorActionListener(new OnEditorActionListener() {@Overridepublic boolean onEditorAction(TextView v, int actionId,KeyEvent event) {if (actionId == v.getImeOptions()) {// ENTERされたとき消すclsIME(v);}return true;}});// クリック時list.setOnItemClickListener(new AdapterView.OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view,int position, long id) {clsIME(view);}});// リストビューのアイテムがクリックされた時に呼び出されるコールバックリスナーを登録しますlist.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {@Overridepublic boolean onItemLongClick(AdapterView<?> parent, View view,int position, long id) {ListView listView = (ListView) parent;// クリックされたアイテムを取得しますString item = (String) listView.getItemAtPosition(position);ClipboardManager cm = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);// 文字列のコピーcm.setText(item);return true;}});btok = new Button_OK();button_ok.setOnClickListener(btok);btcls = new Button_CLS();button_cls.setOnClickListener(btcls);adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1);list.setAdapter(adapter);clsList();}private void clsIME(View v) {InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);imm.hideSoftInputFromWindow(v.getWindowToken(), 0);}private void clsList() {adapter.add("日蒙簡易辞書 Ver 1.00");adapter.add("ヒント:項目長押しで文字列をクリップボードにコピーします");adapter.add("開発:hinekure_inovia\nhttp://twitter.com/hinekure_inovia/");adapter.add("辞書データ参考元:");adapter.add("モンゴル語実践会話入門 東京外国語大学 アジア・アフリカ言語文化研究所\nhttp://www.aa.tufs.ac.jp/documents/training/ilc/textbooks/2008mongolian.pdf");adapter.add("モンゴル 南ゴビ生活:あいさつ\nhttp://nagano53.ojaru.jp/sonota/aisatsu.htm");}// OKボタンprivate class Button_OK implements OnClickListener {@Overridepublic void onClick(View v) {// TODO 自動生成されたメソッド・スタブInputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);imm.hideSoftInputFromWindow(v.getWindowToken(), 0);adapter.clear();// 検索するとこーーーSpannableStringBuilder ssb = (SpannableStringBuilder) text.getText();String keywords;keywords = ssb.toString();Resources res = v.getResources();InputStream is = null;BufferedReader br = null;int result_num = 0;try {try {is = res.openRawResource(R.raw.jmdic);br = new BufferedReader(new InputStreamReader(is));String str;while ((str = br.readLine()) != null) {// キーワードに一致 もしくは 空欄の場合if ((str.indexOf(keywords) != -1) || (keywords == "")) {adapter.add(str);result_num++;}}info.setText("" + result_num + "件見つけました!");} finally {if (br != null)br.close();}if (result_num == 0) {adapter.add("検索ヒント:\n別の言い回しで検索すると出る場合があります。\n漢字をひらがなにしたり単漢字で検索しても出る可能性があります。");}} catch (IOException e) {info.setText("読み込みが失敗しました...");}}}// clearボタンprivate class Button_CLS implements OnClickListener {@Overridepublic void onClick(View v) {// TODO 自動生成されたメソッド・スタブadapter.clear();clsList();text.setText("");info.setText("キーワードを入力してください!");}}}