英语查询小编程
2015-06-23 13:55
316 查看
<img src="https://img-blog.csdn.net/20150623143252561?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGl1eXV4aWFfMjAxNQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/mainbg" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <AutoCompleteTextView android:id="@+id/etWord" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_marginTop="31dp" android:background="@android:drawable/edit_text" android:ems="10" android:hint="@string/searchHint" android:singleLine="true" android:textColor="#552006" android:textColorHint="#782f10" > </AutoCompleteTextView> <Button android:id="@+id/btnSearch" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/etWord" android:layout_alignBottom="@+id/etWord" android:layout_marginLeft="16dp" android:layout_toRightOf="@+id/etWord" android:background="@drawable/ibsearchword" android:onClick="searchWord" android:text="@string/serachWord" /> <TextView android:id="@+id/tvSearchResult" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_alignLeft="@+id/etWord" android:layout_below="@+id/etWord" android:layout_marginTop="22dp" android:textSize="25sp" android:background="@drawable/bg_roundcorner" android:textAppearance="?android:attr/textAppearanceMedium" /> </RelativeLayout>
分析:定义textview组件,来显示所查询的单词,又定义了<span style="font-family: Arial, Helvetica, sans-serif;">AutoCompleteTextView组件,可以查询显示多个单词的效果</span>
<pre name="code" class="html"><?xml version="1.0" encoding="utf-8"?> <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/tvWordItem" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center_vertical" android:minHeight="?android:attr/listPreferredItemHeight" android:paddingLeft="6dip" android:textAppearance="?android:attr/textAppearanceLarge" android:textColor="@color/gray" />
<pre name="code" class="html">import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import com.bzu.gxs.dao.DictionaryAdapter; import com.bzu.gxs.db.DBHelper; import com.bzu.gxs.R; import android.app.Activity; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.text.Editable; import android.text.TextWatcher; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.View.OnClickListener; import android.widget.AutoCompleteTextView; import android.widget.Button; import android.widget.CursorAdapter; import android.widget.TextView; public class Dictionary extends Activity implements OnClickListener, TextWatcher { private DBHelper dbHelper; // 用户输入文本框 private AutoCompleteTextView word; // 定义数据库的名字 private SQLiteDatabase database; private Button searchWord; // 搜索按钮 private TextView showResult; // 用户显示查询结果 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); dbHelper = new DBHelper(getBaseContext());// 打开数据库 database = dbHelper.openDatabase(); init(); searchWord.setOnClickListener(this); // 绑定监听器 word.addTextChangedListener(this); // 绑定文字改变监听器 } public void init() { searchWord = (Button) findViewById(R.id.btnSearch); word = (AutoCompleteTextView) findViewById(R.id.etWord); showResult = (TextView) findViewById(R.id.tvSearchResult); } public void afterTextChanged(Editable s) { Cursor cursor = database.rawQuery( "select english as _id from t_words where english like ?", new String[] { s.toString() + "%" }); // 新建新的Adapter DictionaryAdapter dictionaryAdapter = new DictionaryAdapter(this,cursor, true); // 绑定适配器 word.setAdapter(dictionaryAdapter); } public void beforeTextChanged(CharSequence s, int start, int count, int after) { } public void onTextChanged(CharSequence s, int start, int before, int count) { } public void onClick(View view) { // 查询指定的单词 String sql = "select chinese from t_words where english=?"; Cursor cursor = database.rawQuery(sql, new String[] { word.getText() .toString() }); String result = "查无该词"; // 如果查找单词,显示其中文的意思 if (cursor.getCount() > 0) { cursor.moveToFirst(); // 须使用moveToFirst方法将记录指针移动到第1条记录的位置 result = cursor.getString(cursor.getColumnIndex("chinese")) .replace("&", "&"); } showResult.setText(word.getText() + "\n" + result.toString());// 将结果显示到TextView中 } }
分析:调用适配器,通过textview组件,显示所要查询单词的结果
</pre>
import android.content.Context; import android.database.Cursor; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.CursorAdapter; import android.widget.TextView; import com.bzu.gxs.R; //自定义Adapter类 public class DictionaryAdapter extends CursorAdapter { private LayoutInflater layoutInflater; @Override public CharSequence convertToString(Cursor cursor) { return cursor == null ? "" : cursor.getString(cursor .getColumnIndex("_id")); } // 将单词信息显示到列表中 private void setView(View view, Cursor cursor) { TextView tvWordItem = (TextView) view; tvWordItem.setText(cursor.getString(cursor.getColumnIndex("_id"))); } // 绑定选项到列表中 @Override public void bindView(View view, Context context, Cursor cursor) { setView(view, cursor); } // 生成新的选项 @Override public View newView(Context context, Cursor cursor, ViewGroup parent) { View view = layoutInflater.inflate(R.layout.word_list_item, null); setView(view, cursor); return view; } public DictionaryAdapter(Context context, Cursor c, boolean autoRequery) { super(context, c, autoRequery); layoutInflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); } }
分析:自定义了一个Adapter适配器,通过调用word_list_item布局,把所查询的单词传过来,绑定选项到列表,生成新的选项
<span style="font-family:Arial, Helvetica, sans-serif;"></span><pre name="code" class="html">import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import com.bzu.gxs.R; public class DBHelper { //定义数据库的存放路 4000 径 private final String DATABASE_PATH = android.os.Environment .getExternalStorageDirectory().getAbsolutePath() + "/dictionary"; private final String DATABASE_FILENAME = "dictionary.db"; private Context context; public DBHelper(Context context) { this.context = context; } public SQLiteDatabase openDatabase() { try { // 获得dictionary.db文件的绝对路径 String databaseFilename = DATABASE_PATH + "/" + DATABASE_FILENAME; File dir = new File(DATABASE_PATH); // 如果/sdcard/dictionary目录中存在,创建这个目录 if (!dir.exists()) dir.mkdir(); // 如果在/sdcard/dictionary目录中不存在 // dictionary.db文件,则从res\raw目录中复制这个文件到 // SD卡的目录(/sdcard/dictionary) if (!(new File(databaseFilename)).exists()) { // 获得封装dictionary.db文件的InputStream对象 InputStream is = context.getResources().openRawResource( R.raw.dictionary); FileOutputStream fos = new FileOutputStream(databaseFilename); byte[] buffer = new byte[8192]; int count = 0; // 开始复制dictionary.db文件 while ((count = is.read(buffer)) > 0) { fos.write(buffer, 0, count); } //关闭文件流 fos.close(); is.close(); } // 打开/sdcard/dictionary目录中的dictionary.db文件 SQLiteDatabase database = SQLiteDatabase.openOrCreateDatabase( databaseFilename, null); return database; } catch (Exception e) { } //如果打开出错,则返回null return null; } }
分析:定义了数据库的存放路径,调用数据库,通过InputStream输入流, 获得封装dictionary.db文件的InputStream对象
相关文章推荐
- Android之获取手机上的图片和视频缩略图thumbnails
- Python动态类型的学习---引用的理解
- 完美实现Android ListView中的TextView的跑马灯效果
- Android布局的小窍门?
- Web布局连载——两栏固定布局(五)
- 数据库链接字符串查询网站
- DB2实例管理
- DB2实例管理
- 保障MySQL数据安全的14个最佳方法
- mysql问答汇集
- 创建一个空的IBM DB2 ECO数据库的方法
- 土人系列AS入门教程 -- 对象篇
- Access 2000 数据库 80 万记录通用快速分页类
- 开通一个数据库失败的原因的和解决办法
- 一个简单的asp数据库操作类
- CentOS下DB2数据库安装过程详解
- EasyASP v1.5发布(包含数据库操作类,原clsDbCtrl.asp)第1/2页
- C#托管堆对象实例包含内容分析
- sql2008 还原数据库解决方案