EditText自定义监听的案例
标签: Android
在assets目录下,放置station_code.txt文件(车站code),在主界面需要将station_code.txt文件的车站加载到数据SQLite数据库中,所以会先创建数据库,再创建表,然后再对表进行操作;在初始化车站数据时,代码进行了时间上的优化,减少了加载数据的时间。
本次主要是讲解EditText自定义监听的案例,主要是在StationActivity.java文件下,接下来直接到StationActivity.java看代码吧!
创建数据库
package com.janine.database;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
/**
* SQLiteOpenHelper是SQLite的数据库辅助类,SQliteOpenHelper是一个抽象类,用来管理数据库的创建和版本的管理
*
*/
public class DatabaseHelper extends SQLiteOpenHelper {
private static final String TAG = "DatabaseHelper";
/**
* 构造方法,创建数据库
*
* @param context
* @param name
* 数据库名
* @param factory
* 游标类
* @param version
* 数据库版本
*/
public DatabaseHelper(Context context) {
super(context, "train_ticket.db", null, 2);
}
public DatabaseHelper(Context context, String name, CursorFactory factory, int version) {
super(context, name, factory, version);
}
/**
* 创建接口 实现各表的创建
*/
public static interface TableCreateInterface {
/**
* 创建表
*
* @param db
*/
public void onCreate(SQLiteDatabase db);
/**
* 更新表
*
* @param db
* @param oldVersion
* @param newVersion
*/
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion);
}
@Override
public void onCreate(SQLiteDatabase db) {
StationCodeDao.getInstance().onCreate(db);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
StationCodeDao.getInstance().onUpgrade(db, oldVersion, newVersion);
}
}
创建表,并进行增删改查的操作
package com.janine.database;
import java.util.ArrayList;
import java.util.List;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;
import com.janine.database.DatabaseHelper.TableCreateInterface;
import com.janine.dto.StationCode;
public class StationCodeDao implements TableCreateInterface {
private static final String TAG = "StationCodeDao";
private static StationCodeDao stationCodeDao = new StationCodeDao();
public static StationCodeDao getInstance() {
return stationCodeDao;
}
@Override
public void onCreate(SQLiteDatabase db) {
String sql = "CREATE TABLE IF NOT EXISTS " + StationCode.TABLE_NAME
+ " ( " + "_id integer primary key autoincrement, "
+ StationCode.NAME + " TEXT, " + StationCode.CODE + " TEXT, "
+ StationCode.JIANPIN + " TEXT, " + StationCode.QUANPIN
+ " TEXT" + ");";
db.execSQL(sql);
Log.i(TAG, ">>>>>>> 创建表StationCodeDao...");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
if (oldVersion < newVersion) {
String sql = "DROP TABLE IF EXISTS " + StationCode.TABLE_NAME;
db.execSQL(sql);
this.onCreate(db);
}
}
/**
* 向表中插入数据
*
* @param dbHelper
* @param stationCode
*/
public void insertAll(DatabaseHelper dbHelper, String[] stationCodes) {
SQLiteDatabase db = dbHelper.getWritableDatabase();
db.beginTransaction();
ContentValues codeValues = null;
String code = null;
for (int i = 0; i < stationCodes.length; i++) {
code = stationCodes[i];
String[] stationParam = code.split(",");
codeValues = new ContentValues();
codeValues.put(StationCode.NAME, stationParam[0]);
codeValues.put(StationCode.CODE, stationParam[1]);
codeValues.put(StationCode.JIANPIN, stationParam[2]);
codeValues.put(StationCode.QUANPIN, stationParam[3]);
db.insert(StationCode.TABLE_NAME, null, codeValues);
}
db.setTransactionSuccessful();
db.endTransaction();
db.close();
}
/**
* 模糊查询数据
*
* @param dbHelper
* @param value
*/
public List<StationCode> fuzzyQuery(DatabaseHelper dbHelper, String value) {
SQLiteDatabase db = dbHelper.getWritableDatabase();
List<StationCode> stationCodes = null;
String sql = "select * from " + StationCode.TABLE_NAME + " where "
+ StationCode.NAME + " like ? or " + StationCode.JIANPIN
+ " like ? or " + StationCode.QUANPIN + " like ?";
String[] selectionArgs = new String[] { "%" + value + "%",
"%" + value + "%", "%" + value + "%" };
Cursor cursor = db.rawQuery(sql, selectionArgs);
if (cursor.getCount() > 0) {
stationCodes = new ArrayList<StationCode>(cursor.getCount());
StationCode stationCode = null;
while (cursor.moveToNext()) {
stationCode = new StationCode();
stationCode.setName(cursor.getString(cursor
.getColumnIndex(StationCode.NAME)));
stationCode.setCode(cursor.getString(cursor
.getColumnIndex(StationCode.CODE)));
stationCode.setJianPin(cursor.getString(cursor
.getColumnIndex(StationCode.JIANPIN)));
stationCode.setQuanPin(cursor.getString(cursor
.getColumnIndex(StationCode.QUANPIN)));
stationCodes.add(stationCode);
}
}
cursor.close();
db.close();
return stationCodes;
}
}
实体类
package com.janine.dto;
public class StationCode {
public static final String TABLE_NAME = "station_code";
public static final String ID = "_id";
public static final String NAME = "name";
public static final String CODE = "code";
public static final String JIANPIN = "jianpin";
public static final String QUANPIN = "quanpin";
private int _id;
private String name;
private String code;
private String jianPin;
private String quanPin;
public StationCode() {
super();
}
public StationCode(String name, String code, String jianPin, String quanPin) {
super();
this.name = name;
this.code = code;
this.jianPin = jianPin;
this.quanPin = quanPin;
}
public int get_id() {
return _id;
}
public void set_id(int _id) {
this._id = _id;
}
public String