Android 간단 한 전자 사전 구현
7658 단어 Android
로 컬 전자 사전 은 데이터베이스 에 저장 되 어 있 으 며, 원본 파일 코드 는http://download.csdn.net/detail/bq1073100909/8079045
SD 카드 에 대한 읽 기와 쓰기 권한 추가:
MainActivity.java
package org.dyb.activity;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AutoCompleteTextView;
import android.widget.Button;
import android.widget.CursorAdapter;
import android.widget.TextView;
import android.app.Activity;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
public class MainActivity extends Activity implements OnClickListener,
TextWatcher {
//
private final String DATABASE_PATH = android.os.Environment
.getExternalStorageDirectory().getAbsolutePath() + "/dictionary";
//
private AutoCompleteTextView word;
//
private final String DATABASE_FILENAME = "dictionary.db";
private SQLiteDatabase database;
private Button searchWord;
//
private TextView showResult;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//
database = openDatabase();
searchWord = (Button) findViewById(R.id.searchWord);
word = (AutoCompleteTextView) findViewById(R.id.word);
//
searchWord.setOnClickListener(this);
word.addTextChangedListener(this);
showResult = (TextView) findViewById(R.id.result);
}
public class DictionaryAdapter extends CursorAdapter {
private LayoutInflater layoutInflater;
public DictionaryAdapter(Context context, Cursor c, boolean flags) {
super(context, c, flags);
layoutInflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public CharSequence convertToString(Cursor cursor) {
return cursor == null ? "" : cursor.getString(cursor
.getColumnIndex("_id"));
}
//
@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;
}
//
@Override
public void bindView(View view, Context context, Cursor cursor) {
setView(view, cursor);
}
//
private void setView(View view, Cursor cursor) {
TextView tvWordItem = (TextView) view;
tvWordItem.setText(cursor.getString(cursor.getColumnIndex("_id")));
}
}
//
private SQLiteDatabase openDatabase() {
try {
// dictionary.db
String databaseFilename = DATABASE_PATH + "/" + DATABASE_FILENAME;
File dir = new File(DATABASE_PATH);
// ,
if (!dir.exists()) {
dir.mkdir();
}
// /sdcard/dictionary
// dictionary.db , res\raw
// SD (/sdcard/dictionary)
if (!(new File(databaseFilename)).exists()) {
// dictionary.db InputStream
InputStream is = 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) {
e.printStackTrace();
}
return null;
}
@Override
public void onClick(View v) {
//
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) {
// moveToFirst 1
cursor.moveToFirst();
result = cursor.getString(cursor.getColumnIndex("chinese"))
.replace("&", "&");
}
// TextView
showResult.setText(word.getText() + "
" + result.toString());
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
// english _id
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);
}
}
레이아웃 파일:
activity_main.xml
word_list_item.xml
strings.xml
Settings
Hello world!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.