读书人

一个简略的中英文翻译词典学习(类似灵

发布时间: 2012-09-20 09:36:50 作者: rapoo

一个简单的中英文翻译词典学习(类似灵格斯)三

????? 在查询之后的详细信息中,我会注意到在UI开发中关于回车键的实现功能以及在listView中展示所有信息的实现,一个查看单个单词信息怎么实现呢?

?

实现回车键代码功能在Android中的实现

?

?

  /**        * 编辑框添加事件        */       wordEdit.setOnKeyListener(new View.OnKeyListener() {      @Override   public boolean onKey(View v, int keyCode, KeyEvent event) {   if (event.getAction() == KeyEvent.ACTION_DOWN && keyCode == KeyEvent.KEYCODE_ENTER){   // user input enter   queryButton.performClick();   return true;   }   return false;   }   });

?

在Android中细心童鞋可以发现,Android中可以支持JSON格式的:

  /**     * 获取查询项的信息     * @param word     * @param result     * @return     * @throws JSONException     */private List<SearchItem> getAudioVoiceByJSON(String word, String result)throws JSONException {JSONObject jsonObject = new JSONObject(result);JSONArray jsonArray = jsonObject.getJSONArray("s");if (jsonArray!= null && jsonArray.length() >0){List<SearchItem> rt = new ArrayList<SearchItem>();for(int i=0;i<jsonArray.length(); i++){JSONObject row = jsonArray.getJSONObject(i);String rword = row.getString("g");String e = row.getString("e");rt.add(new SearchItem(rword, e));}if (cache.size() > 100){cache.remove(cache.keySet().iterator().next());}cache.put(word, rt);return rt;}return Collections.emptyList();}

?

实现关闭页面的代码如下:

 /**   * 点击返回按钮的事件   */  backButton.setOnClickListener(new OnClickListener() {      @Override   public void onClick(View v) {    finish();   }  });

?

?实现界面切换的代码如下:

/**            *点击一个页面的记录跳转的方法            */           searchListView.setOnItemClickListener(new OnItemClickListener() {   @Override   public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,   long arg3) {   SearchItem item = searchItemAdapter.getItems().get(arg2);   if (item != null){   //设置跳转的信息  DictActivity 当前的页面 ,  DetailActivity 单词的详细情况   Intent intent = new Intent(DictActivity.this, DetailActivity.class);   //设置辅助的信息   intent.putExtra("word", item.getWord());   //设置激活的界面   startActivity(intent);   }   }   });

?

?

?

至于ListView在下一篇Blog中讲解。

(*^__^*) 嘻嘻……

?

?

?

?

源代码如下:

package com.easyway.android.xdict;import java.net.URLEncoder;import java.util.ArrayList;import java.util.Collections;import java.util.HashMap;import java.util.List;import java.util.Map;import org.json.JSONArray;import org.json.JSONException;import org.json.JSONObject;import android.app.Activity;import android.app.AlertDialog;import android.app.Dialog;import android.app.ProgressDialog;import android.content.DialogInterface;import android.content.Intent;import android.content.DialogInterface.OnClickListener;import android.os.Bundle;import android.util.Log;import android.view.KeyEvent;import android.view.View;import android.widget.AdapterView;import android.widget.Button;import android.widget.EditText;import android.widget.ListView;import android.widget.AdapterView.OnItemClickListener;/** * 字典首界面 * @author longgangbai * @date 2010-5-28 * @version 1.0 * @since JDK6.0 */public class DictActivity extends Activity {    /** Called when the activity is first created. */    /* (non-Javadoc)     * @see android.app.Activity#onCreate(android.os.Bundle)     */private ProgressDialog pdialog;private SearchItemAdapter searchItemAdapter;private static final int DIALOG_WORD_REQUIRED = 0;private  EditText wordEdit;private  Button queryButton;private  ListView searchListView;private static Map<String, List<SearchItem>> cache = new HashMap<String, List<SearchItem>>();/** * 界面启动时使用弹出框 */@Overrideprotected Dialog onCreateDialog(int id) {switch (id) {case DIALOG_WORD_REQUIRED:AlertDialog.Builder builder = new AlertDialog.Builder(DictActivity.this);builder.setMessage("请输入你想查询的单词!").setCancelable(false).setPositiveButton("确定", new OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {dialog.cancel();//设置焦点wordEdit.setFocusable(true);}});try {return builder.create();} catch (Exception e) {Log.e(DictActivity.class.getName(), e.getMessage(), e);}break;default:return super.onCreateDialog(id);}return super.onCreateDialog(id);}/** * 调用时启动线程 */    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        //设置视图        setContentView(R.layout.main);        //设置标题        setTitle("XDict");        //创建组件        createComponent();                //绑定事件        bindListener();    }    /**     * 创建组件     */    public void createComponent(){      List<SearchItem> items = new ArrayList<SearchItem>();          //创建自定义的ArrayAapter的适配器对象          searchItemAdapter = new SearchItemAdapter(this, R.layout.row, items);          //获取ListView对象          searchListView = (ListView) findViewById(R.id.search_listview);          //设置适配器对象          searchListView.setAdapter(searchItemAdapter);          queryButton = (Button) findViewById(R.id.query_button);          wordEdit = (EditText) findViewById(R.id.word_edittext);    }    /**     * 绑定事件     */    public void bindListener(){       /**        * 编辑框添加事件        */       wordEdit.setOnKeyListener(new View.OnKeyListener() {      @Override   public boolean onKey(View v, int keyCode, KeyEvent event) {   if (event.getAction() == KeyEvent.ACTION_DOWN && keyCode == KeyEvent.KEYCODE_ENTER){   // user input enter   queryButton.performClick();   return true;   }   return false;   }   });       /**        * 查询按钮添加事件        */           queryButton.setOnClickListener(new View.OnClickListener() {      @Override   public void onClick(View v) {   searchItemAdapter.getItems().clear();   searchItemAdapter.notifyDataSetChanged();   String word = wordEdit.getText().toString();   if (word == null || word.trim().length() == 0){   showDialog(DIALOG_WORD_REQUIRED);   return ;   }   //添加进度条   pdialog = ProgressDialog.show(DictActivity.this, "请稍等...", "正在请求数据...", true);   //添加线程的   new Thread(){   @Override   public void run() {   final List<SearchItem> searchItems = getSearchItems(wordEdit.getText().toString());   searchItemAdapter.getItems().addAll(searchItems);   //采用UI线程更改界面信息   runOnUiThread(new Runnable() {   @Override   public void run() {   searchItemAdapter.notifyDataSetChanged();   View noresultTextview = findViewById(R.id.nosearchresult_textview);   if (searchItems.isEmpty()){   noresultTextview.setVisibility(View.VISIBLE);   queryButton.setFocusable(true);   }else{   noresultTextview.setVisibility(View.INVISIBLE);   }   //进度条消失   pdialog.dismiss();   }   });   }   }.start();   }   });           /**            *点击一个页面的记录跳转的方法            */           searchListView.setOnItemClickListener(new OnItemClickListener() {   @Override   public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,   long arg3) {   SearchItem item = searchItemAdapter.getItems().get(arg2);   if (item != null){   //设置跳转的信息  DictActivity 当前的页面 ,  DetailActivity 单词的详细情况   Intent intent = new Intent(DictActivity.this, DetailActivity.class);   //设置辅助的信息   intent.putExtra("word", item.getWord());   //设置激活的界面   startActivity(intent);   }   }   });    }        /**     * 设置查询参数     * @return     */    public  Map<String,String> getDicAppParamsMap(){    Map<String,String> paramsMap=new HashMap<String,String>();paramsMap.put("User-Agent", "Mozilla/5.0 (X11; U; Linux i686; zh-CN; rv:1.9.1.6) Gecko/20091215 Ubuntu/9.10 (karmic) Firefox/3.5.6");paramsMap.put("Referer", "http://dict.cn/");paramsMap.put("ISAJAX", "yes");paramsMap.put("Cookie", "dictid=u; __utma=7761447.596616007.1262230974.1262230974.1262321903.2; __utmz=7761447.1262230974.1.1.utmccn=(direct)|utmcsr=(direct)|utmcmd=(none); h=%2Ffuck%2Fmy%2F%B0%B2%C8%AB%BC%EC%B2%E9%2F%CE%D2%B5%C4%2F%CD%AC%D2%E5%B4%CA%2Fshitwork%2Ffuckhead%2F; __utmc=7761447; __utmb=7761447");paramsMap.put("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");return  paramsMap;    }            /**     * 查询相关建议的页面     * @param word     * @return     */    private List<SearchItem> getSearchItems(String word){    List<SearchItem> cacheData = cache.get(word);    if (cacheData != null){    return cacheData;    }    try{    String urlString = "http://dict.cn/ajax/suggestion.php?"+"q=" + URLEncoder.encode(word,"utf-8") + "&s=all";        Map<String,String> paramsMap=getDicAppParamsMap();String result=HTTPClient.executeByHttpURLConnection(urlString, paramsMap); if (result!=null&&result.length()>0){ return getAudioVoiceByJSON(word, result);}} catch (Exception e) {Log.d(DictActivity.class.getName(), "Failed to get the search items", e);}return Collections.emptyList();    }        /**     * 获取查询项的信息     * @param word     * @param result     * @return     * @throws JSONException     */private List<SearchItem> getAudioVoiceByJSON(String word, String result)throws JSONException {JSONObject jsonObject = new JSONObject(result);JSONArray jsonArray = jsonObject.getJSONArray("s");if (jsonArray!= null && jsonArray.length() >0){List<SearchItem> rt = new ArrayList<SearchItem>();for(int i=0;i<jsonArray.length(); i++){JSONObject row = jsonArray.getJSONObject(i);String rword = row.getString("g");String e = row.getString("e");rt.add(new SearchItem(rword, e));}if (cache.size() > 100){cache.remove(cache.keySet().iterator().next());}cache.put(word, rt);return rt;}return Collections.emptyList();}}

?

读书人网 >移动开发

热点推荐