您的位置:首页 > 其它

查询的自动提示功能实现

2015-07-02 22:30 351 查看
1,将EditText改成AutoCompleteTextView

2,在values/strings.xml中

<string-array name="str">

<item>abandon</item>

<item>ability</item>

<item>able</item>

<item>abnormal</item>

<item>aboard</item>

<item>about</item>

<item>above</item>

<item>abroad</item>

<item>absence</item>

<item>absent</item>

<item>china</item>

<item>japan</item>

<item>korean</item>

</string-array>

3,在MainActivity中的onCreate方法中加ArrayAdapter aaa=ArrayAdapter.createFromResource(this, R.array.str, android.R.layout.simple_spinner_item);

aaa.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

((AutoCompleteTextView) etWord).setAdapter(aaa);

代码:

MainActivity.java

[java] view
plaincopyprint?

package com.example.happydictionary;

import android.app.Activity;

import android.os.Bundle;

import android.text.TextUtils;

import android.view.Menu;

import android.view.View;

import android.widget.ArrayAdapter;

import android.widget.AutoCompleteTextView;

import android.widget.EditText;

import android.widget.TextView;

import com.example.happydictionary.dao.WordDao;

public class MainActivity extends Activity {

//private AutoCompleteTextView autotext;

//private ArrayAdapter<String> arrayAdapter;

private WordDao wordDao;

private EditText etWord;

private TextView tvResult;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

initViews();

//*autotext=(AutoCompleteTextView)findViewById(R.id.tvSearchResult);

//String [] arr={"aa","aab","aac"};

//arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,arr);

//autotext.setAdapter(arrayAdapter);

ArrayAdapter aaa=ArrayAdapter.createFromResource(this, R.array.str, android.R.layout.simple_spinner_item);

aaa.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

((AutoCompleteTextView) etWord).setAdapter(aaa);

}

private void initViews() {

etWord = (EditText) findViewById(R.id.etWord);

tvResult = (TextView) findViewById(R.id.tvSearchResult);

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.main, menu);

return true;

}

public void searchWord(View view) {

String english = etWord.getText().toString();

wordDao = new WordDao(this);

if (TextUtils.isEmpty(english)) {

tvResult.setText("请输入您想查询的单词");

} else {

String chinese = wordDao.getChinese(english);

tvResult.setText(chinese);

}

}

}

WorldDao.java

[java] view
plaincopyprint?

package com.example.happydictionary.dao;

import android.content.Context;

import android.database.Cursor;

import android.database.sqlite.SQLiteDatabase;

import com.example.happydictionary.db.DBHelper;

public class WordDao {

private DBHelper dbHelper;

private SQLiteDatabase sqLiteDatabase;

public WordDao(Context context){

dbHelper=new DBHelper(context);

}

public String getChinese(String english){

sqLiteDatabase=dbHelper.openDatabase();

String sql="select chinese from t_words where english=?";

Cursor cursor=sqLiteDatabase.rawQuery(sql, new String[]{english});

String chinese="查无该词";

if(cursor.moveToFirst()){

chinese=cursor.getString(cursor.getColumnIndex("chinese"));

}

return chinese;

}

}

DBHelper.java

[java] view
plaincopyprint?

package com.example.happydictionary.db;

import java.io.File;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import com.example.happydictionary.R;

import com.example.happydictionary.R.raw;

import android.content.Context;

import android.database.sqlite.SQLiteDatabase;

import android.os.Environment;

import android.util.Log;

/**

* 实现将数据库文件从raw目录拷贝到手机里存放数据库的位置

*

* @author cabbage

*/

public class DBHelper {

private final int BUFFER_SIZE = 400000;

public static final String DB_NAME = "idiom.db"; // 保存的数据库文件名

public static final String PACKAGE_NAME = "com.example.happydictionary";// 应用的包名

public static final String DB_PATH = "/data"

+ Environment.getDataDirectory().getAbsolutePath() + "/"

+ PACKAGE_NAME + "/databases";

/*// SDCard 定义数据库的存放路径

private final String DATABASE_PATH = android.os.Environment

.getExternalStorageDirectory().getAbsolutePath() + "/dictionary";*/

private Context context;

public DBHelper(Context context) {

this.context = context;

}

public SQLiteDatabase openDatabase() {

try {

File myDataPath = new File(DB_PATH);

if (!myDataPath.exists()) {

myDataPath.mkdirs();// 如果没有这个目录则创建

}

String dbfile = myDataPath + "/" + DB_NAME;

if (!(new File(dbfile).exists())) {// 判断数据库文件是否存在,若不存在则执行导入,否则直接打开数据库

InputStream is = context.getResources().openRawResource(

R.raw.dictionary); // 欲导入的数据库

FileOutputStream fos = new FileOutputStream(dbfile);

byte[] buffer = new byte[BUFFER_SIZE];

int count = 0;

while ((count = is.read(buffer)) > 0) {

fos.write(buffer, 0, count);

}

fos.close();

is.close();

}

SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(dbfile,

null);

return db;

} catch (FileNotFoundException e) {

Log.e("Database", "File not found");

e.printStackTrace();

} catch (IOException e) {

Log.e("Database", "IO exception");

e.printStackTrace();

}

return null;

}

}

World.java

[java] view
plaincopyprint?

package com.example.happydictionary.entity;

public class Word {

private String english;

private String chinese;

public String getEnglish() {

return english;

}

public void setEnglish(String english) {

this.english = english;

}

public String getChinese() {

return chinese;

}

public void setChinese(String chinese) {

this.chinese = chinese;

}

}

DBHelperTest.java

[java] view
plaincopyprint?

package com.example.happydictionary.test;

import com.example.happydictionary.db.DBHelper;

import android.test.AndroidTestCase;

public class DBHelperTest extends AndroidTestCase {

public void testCreateDB(){

DBHelper dbHelper=new DBHelper(getContext());

dbHelper.openDatabase();

}

}

activity_main.xml

[html] view
plaincopyprint?

<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" >

<requestFocus />

</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>

strings.xml

[html] view
plaincopyprint?

<?xml version="1.0" encoding="utf-8"?>

<resources>

<string name="app_name">电子词典</string>

<string name="action_settings">Settings</string>

<string name="hello_world">Hello world!</string>

<string name="searchHint">请输入您要查询的单词</string>

<string name="serachWord">查询</string>

<string-array name="str">

<item>abandon</item>

<item>ability</item>

<item>able</item>

<item>abnormal</item>

<item>aboard</item>

<item>about</item>

<item>above</item>

<item>abroad</item>

<item>absence</item>

<item>absent</item>

<item>china</item>

<item>japan</item>

<item>korean</item>

</string-array>

</resources>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: