android开发日记 ——avata项目
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);
最后还有一个CursorAdapter的重写,基本与英汉词典的相似(上有链接)
收获:
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项目相关推荐
- 云炬Android开发笔记 3-1项目架构初始化
一.项目架构初始化 1.我们的应用只有一个activity,它里面是多个fragment进行切换的,这样的好处是应用会非常顺滑,并且一个activity也可以进行很多全局的处理. 在类前加上final ...
- 云炬Android开发笔记 2-1项目初始化
一.项目基础 1.创建项目 修改完成后 2.修改具体项目的module名字 3.创建annotationmodule,一定要选择javalibrary.因为它的注解里面会使用很多标准的Java sdk ...
- Android开发日记
Android日记 欢迎使用Markdown编辑器 新的改变 功能快捷键 合理的创建标题,有助于目录的生成 如何改变文本的样式 插入链接与图片 如何插入一段漂亮的代码片 生成一个适合你的列表 创建一个 ...
- Android开发MVP模式--项目实战
1 前言 苏宁+App是苏宁易购集团零售云研发中心分销研发中心主要产品之一,由于项目处于初期阶段,业务逻辑复杂,导致业务需求变动快,常常在开发甚至测试过程中出现界面或者后台接口调整的情况. App客户 ...
- 【Android开发日记】 新浪微博API SSO授权 分享
其实新浪API的说明文档已经说的很明白了,demo里面注释也很清晰. 官方SDK下载地址:https://github.com/sinaweibosdk/weibo_android_sdk 我直接把我 ...
- 【Android开发日记】第一个任务Android Service!Service靴+重力感应器+弹出窗口+保持执行...
前言: 近期在写一个小程序,需求是手机摇一摇就弹窗出来.第一次使用了Service,学习了两天,实现了Service弹窗,开机启动,Service启动和销毁,Service保持一直执行. 满足了自己的 ...
- 云炬Android开发笔记 1项目架构设计与模块分解
一.项目架构设计与模块分解 ② ③ ④ ⑤ ⑥ 2. ② 注: 1.WeakHashMap的键值对在内存需要的时候可以被回收 2.static final定义的变量名需要大写,并且用下划线进行分隔.如 ...
- Android开发之修改项目的仓库地址亲测有效
很简单: 直接找到你项目git文件夹下面的config文件里面的url即可:如下图: 第一步: 第二步: 第三步: 修改里面的url仓库地址: 再介绍一种最简单的修改办法:Windows和Mac通用 ...
- Android开发日记(六)
textViewUserName.setCursorVisible(false);//隐藏光标 textViewUserName.setFocusable(false);//失去焦点 textView ...
- 【Android开发日记】妙用 RelativeLayout 实现3
段布局
在设计过程中,我们经常会遇到这样的需求: 把一条线3控制,左对齐左控制,右侧控制右对齐,中间控制,以填补剩余空间. 或者一列内放3个控件,上面的与顶部对齐,以下的沉在最底部,中间控件是弹性的.充满剩余 ...
最新文章
- java查看内存地址_Java内存机制和内存地址
- 调试JDK源码-HashSet实现原理
- 阿里开发者招聘节 | 面试题14:如何实现两金额数据相加(最多小数点两位)...
- ITK:计算CovariantVector的范数并将其标准化
- 【剑指offer】面试题29:顺时针打印矩阵(Java)
- 简单的Postman,还能玩出花?
- ubuntu中由apt-get获得的文件包保存在哪里?
- jQuery 源码系列(四)Tokens 词法分析
- 上海纽约大学计算机专业怎样,聚焦|对话上纽大计算机科学教授郭斯瑶
- RAP框架练习(续)
- 如何创建一个<style> tag with Javascript?
- 我的开源项目:JPEG分析器
- 离散作业--求左陪集
- 利用LM317的LED恒流源电路图
- python简单实现天猫手机评论标签提取--自然语言处理
- 积极主动的思想认识是提高学习效率的关键,一次和师傅的深入交流让我受益匪浅
- grads 相关系数_era interim说明文件
- 使用hydra密码字典破解Windows10登陆密码
- ios-UI-汤姆猫德游戏实现
- cortana android 地图,地图-系统爱好者