EditText自定义监听的案例

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 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值