android开发日记 ——avata项目
来源:互联网 发布:购买网站域名多少钱 编辑:程序博客网 时间:2024/05/23 14:23
12/21(周三)
今日进度:主要做的是关于UI界面完善,做出如下效果(类似于英汉字典的设计)
实现:
TextWatcher mTextWatcher = new TextWatcher() {@Overridepublic void onTextChanged(CharSequence s, int start, int before,int count) {// TODO Auto-generated method stub}@Overridepublic void beforeTextChanged(CharSequence s, int start, int count,int after) {// TODO Auto-generated method stub}@Overridepublic void afterTextChanged(Editable s) {// 必须将user_name字段的别名设为_idCursor cursor = dbHelper.rawQuery("select user_name as _id from "+ AvataDBHelperOnUser.TBNAME + " where user_name like ?",new String[] { s.toString() + "%" });UserSaveAdapter dictionaryAdapter = new UserSaveAdapter(getApplicationContext(), cursor, true);// actvWord是在Main类中定义的AutoCompleteTextView类型的变量edt_login_username.setAdapter(dictionaryAdapter);}};
然后在LoginActivity中的onceate()方法里面为edittextview设置监听器
edt_login_username.addTextChangedListener(mTextWatcher);
收获:
1.学会了上面效果的实现,以及TextWatcher的使用
2.对SQLiteOpenHelper类的使用更加熟悉,另外,了解到直接实例化一个DBHelper对象不会调用DBHelper的onCreate()方法,只有在调用getWritableDatabase();或者getReadableDatabase()时才会调用oncreate方法!
12/22(周四)
今日进度:主要做的是关于UI界面完善,大部分时间都花在了Login界面的逻辑完善上!
问题:这个一个在通过调用自己重写的SQLiteOpenHelper类的查询方法时碰到的问题
// 数据库版本private static final int VERSION = 1;public static final String TBNAME = "user_information";// 新建一个表String sql = "create table if not exists " + TBNAME+ "(user_name TEXT PRIMARY KEY,user_pwd TEXT)";这里建了一张用户信息表,里面至存放了2个字段,用户名和密码.
public Cursor query(String user_name) {SQLiteDatabase db = getReadableDatabase();return db.query(TBNAME, new String[] { "user_pwd" }, "user_name=?",new String[] { user_name }, null, null, null);}就是调用这个方法,通过用户名获取得到数据库中相应的密码。
dbHelper = new AvataDBHelperOnUser(getApplicationContext(), "userDB");Cursor cursor = dbHelper.query(sp_name.trim());这是在loginActivity中调用查询方法,获取到一个Cursor(游标)而一般我这么写,cursor中只会存在一条数据,所以我想直接通过cursor.getString(0)获取密码的值,但是此时问题出现了
程序老是报异常常:{com.avata.mb.activity/com.avata.mb.activity.LoginActivity}: android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 1
解决方案:在cursor.getString(0)之前必须加一句 cursor.moveToFirst(),让游标指向第一条数据!
细节决定成败啊!
收获:
1.熟悉了SQLiteOpenHelper的使用
2.温习了一下关于sharedPreference的使用:
//实例化一个SharedPreferences 对象
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
/** 以sharedpreferences的形式保存 */private void save2sp(String name, Boolean name_ischecked,Boolean pwd_ischecked, Boolean com_ischecked, Boolean exa_ischecked) {SharedPreferences.Editor editor = settings.edit();editor.putBoolean("is_saved", true);editor.putBoolean("name_ischecked", name_ischecked);// 用户名editor.putBoolean("pwd_ischecked", pwd_ischecked);// 密码editor.putBoolean("com_ischecked", com_ischecked); // 编辑editor.putBoolean("exa_ischecked", exa_ischecked); // 审核editor.putString("username", name);editor.commit();}//获取SharedPreferences 对象里面的数据
private void getDataFromSp() {settings = getSharedPreferences(PREFS_NAME, 0);boolean is_saved = settings.getBoolean("is_saved", false);}
- android开发日记 ——avata项目
- 项目日记1—项目开发环境介绍
- 项目开发成长日记
- Android WebView基础开发——Android菜鸟成长日记
- Android开发学习日记
- Android开发bug日记
- 【日记】学习Android开发
- Android开发日记
- Android开发问题日记
- 开发日记——LastWord
- ASP.NET项目开发日记
- MyEyes项目开发日记之一
- Qt项目开发日记1
- android开发—项目结构设计
- android wifi驱动开发日记
- android wifi驱动开发日记
- android wifi驱动开发日记
- android wifi驱动开发日记
- Struts2学习笔记(12)-----Struts2之动态方法调用
- CSDN太。。。
- mysql修改默认字符和默认存储引擎
- (转载)编译你自己的Linux内核(Kernel)
- ORG.APACHE.CATALINA.CORE.STANDARDCONTEXT LISTENERSTART
- android开发日记 ——avata项目
- 浅谈2D游戏开发,面向C++初学者
- 80后的我们---开始颈椎病了
- UML中的用例(Use Case)概念分析及StarUML实例
- Ubuntu中文输入法设置
- 很不错的几篇关于算法的文章
- vc数据库编程的一些基本知识
- 手动更新android系统程序
- Android中结合OrmLite for android组件对SQLite的CRUD(增删改查)操作实例