Android仿QQ登录下拉历史列表
demo中包含了Sqlite数据库增删改查,对存储的账号进行按照最新的时间排序,限制了最多存储5条数据。
效果图:


1.首先创建MyHelper建表:
public class MyHelper extends SQLiteOpenHelper {
public MyHelper(Context context) {
super(context,"hayden.db",null,3);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE account(_id INTEGER PRIMARY KEY AUTOINCREMENT,phone VARCHAR(20),name VARCHAR(20),time INTEGER(100),fullName VARCHAR(20))");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
2.接着创建存储历史的bean类,包含phone,name,time这三个字段,然后创建AccountDao对数据增删改查:
public class AccountDao {
public final static String TABLE_NAME = "account";
private MyHelper helper;
private String phone;
public AccountDao(Context context){
helper=new MyHelper(context);
}
public void insert(HistoryInfo info){
SQLiteDatabase db=helper.getWritableDatabase();
//根据手机号判断去重
String[] colum = {"phone"};
String where = "phone" + "= ?";
String[] whereValue = {info.getPhone()};
Cursor cursor = db.query(TABLE_NAME, colum, where, whereValue, null, null, null);
while (cursor.moveToNext()){
phone = cursor.getString(cursor.getColumnIndex("phone"));
}
cursor.close();
ContentValues values=new ContentValues();
values.put("phone",info.getPhone());
values.put("name",info.getName());
values.put("time",info.getTime());
if(!TextUtils.isEmpty(phone)){
db.update(TABLE_NAME,values,"phone" + "=?",new String[]{phone});
}else {
db.insert(TABLE_NAME,null,values);
}
db.close();
}
public int delete(String phone){
SQLiteDatabase db=helper.getWritableDatabase();
int count=db.delete(TABLE_NAME,"phone=?",new String[]{phone +""});
db.close();
return count;
}
public List<HistoryInfo> queryAll(){
SQLiteDatabase db=helper.getWritableDatabase();
Cursor cursor=db.query(TABLE_NAME,null,null,null,null,null,null);
List<HistoryInfo> list=new ArrayList();
while (cursor.moveToNext()) {
HistoryInfo historyInfo = new HistoryInfo();
historyInfo.setPhone(cursor.getString(cursor.getColumnIndex("phone")));
historyInfo.setName(cursor.getString(cursor.getColumnIndex("name")));
historyInfo.setTime(cursor.getLong(cursor.getColumnIndex("time")));
list.add(historyInfo);
}
db.close();
cursor.close();
return list;
}
}
3.然后监听是否点击登录历史按钮,如果上次登录成功,那么将这条数据插入到数据库中,点击历史按钮时查询列表,并且按照登录时间降序。
//是否显示历史登录列表
historyCB.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
initPopuWindow();//显示历史列表
if (historyList.size() == 0) {
pwdBottom.setVisibility(View.VISIBLE);
} else {
pwdBottom.setVisibility(View.GONE);
}
} else {
selectPopupWindow.dismiss(); //隐藏列表
pwdBottom.setVisibility(View.VISIBLE);
}
}
});
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.loginBtn:
if(TextUtils.isEmpty(userET.getText().toString()) || TextUtils.isEmpty(pwdET.getText().toString())){
Toast.makeText(LoginActivity.this,"账号或者密码不能为空",Toast.LENGTH_LONG).show();
return;
}else {
HistoryInfo historyInfo = new HistoryInfo(userET.getText().toString(), "Tom", new Date().getTime());
accountDao.insert(historyInfo);
startActivity(new Intent(LoginActivity.this,new SecondActivity().getClass()));
}
break;
}
}
这样仿QQ登录历史列表就完成了,希望对看到文章的同学有所帮助。下载完整demo地址:
https://download.csdn.net/download/heishuai123/10907691
原文地址:https://blog.csdn.net/lou_liang/article/details/80339313
Android仿QQ登录下拉历史列表的更多相关文章
- Android简易实战教程--第二十二话《自定义组合控件模拟qq登录下拉框和其中的一些”小技巧”》
转载此文章请注明出处:点击打开链接 http://blog.csdn.net/qq_32059827/article/details/52313516 首先,很荣幸此专栏能被CSDN推荐到主页.荣 ...
- 第三方开源框架的下拉刷新列表(QQ比较常用的)。
PullToRefreshListView是第三方开源框架下拉刷新列表,比较流行的QQ 微信等上面都在用. 下载地址(此开源框架于2013年后不再更新) 点此下载 package com.lixu.k ...
- JS网页特效操作流程——下拉菜单列表与登录注册弹窗效果
下拉菜单列表 <style> *{ margin: 0px; padding: 0px; } .men ...
- openerp模块收藏 移除下拉选择列表中的“创建并编辑”链接(转载)
移除下拉选择列表中的“创建并编辑”链接 原文:http://shine-it.net/index.php/topic,5990.0.html 有时希望下拉列表中列出的项是与主表某个字段关联的,用户只能 ...
- 用NPOI导出Excel,生成下拉列表、以及下拉联动列表(第1篇/共3篇)
最近帅帅的小毛驴遇到一个很奇葩的需求: 导出Excel报表,而且还要带下拉框,更奇葩的是,下拉框还是联动的. 小毛驴一天比较忙,所以这等小事自然由我来为她分忧了.经历了两天,做了几种解决方案,最后完美 ...
- WPF开发实例——仿QQ登录界面
原文:WPF开发实例--仿QQ登录界面 版权声明:本文为博主原创文章,如需转载请标明转载地址 http://blog.csdn.net/u013981858 https://blog.csdn.net ...
- Android仿QQ ios dialog,仿QQ退出向上菜单
Android仿QQ ios dialog,仿QQ退出向上菜单 EasyDialog两种模式 仿QQ退出向上菜单,自己定义向上菜单 github地址:https://gith ...
- Android 仿QQ首页的消息和电话的切换,首页的头部(完全用布局控制)
Android 仿QQ首页的消息和电话的切换,首页的头部(完全用布局控制) 首先贴上七个控制布局代码 1.title_text_sel.xml 字体颜色的切换 放到color文件夹下面 <?xm ...
- 编写Java程序,使用Swing布局管理器和常用控件,实现仿QQ登录界面
返回本章节 返回作业目录 需求说明: 使用Swing布局管理器和常用控件,实现仿QQ登录界面 实现思路: 创建登录界面的类QQLogin,该类继承父类JFrame,在该类中创建无参数的构造方法,在构造 ...
随机推荐
- application/x-www-form-urlencoded从前端到后台
html <form id="userForm1" enctype="application/x-www-form-urlencoded" method= ...
- FileReader 获取图片BASE64 代码 并预览
FileReader 获取图片的base64 代码 并预览 FileReader ,老实说我也不怎么熟悉.在这里只是记录使用方法. 方法名 参数 描述 abort none 中断读取 readAsBi ...
- RegExp & bug
RegExp & bug translated bug // OK && tranlate `/` let new_obj_reg = new RegExp(`^(([^< ...
- Android中有哪些好的开发框架?
在安卓开发中,框架的使用必不可少,合理利用一些好的开发框架,往往可以达到事半功倍的效果.本文小编就将和大家分享安卓开发者不得不知的5款框架,一起来看看吧,新技能get走起~~ 1.thinkAndro ...
- python3初识selenium
第一步:安装与配置 1.电脑上需要有火狐浏览器(默认安装在C:\Program Files (x86)\Mozilla Firefox目录下). 2.使用pip install selenium安装好 ...
- How to setup Active Directory (AD) In Windows Server 2016
Windows Server 2016 is the newest server operating system released by Microsoft in October 12th, 201 ...
- jquery遍历之后代
向下遍历dom树的jquery方法 children()方法返回被选元素的所有直接子元素,只会对向下一级对dom树进行遍历. 例子 代码: $(document).ready(function(){ ...
- TCP(二)
TCP半连接和全连接问题 TCP握手过程详解 如上图所示,关键部分:syns queue(半连接队列)和accept queue(全连接队列) 正常情况下的处理过程如下: 1)当server端收到cl ...
- Spring发展史
https://www.cnblogs.com/RunForLove/p/4641672.html
- 使用FindBugs-IDEA插件找到代码中潜在的问题
另一篇使用文档,参照:https://www.cnblogs.com/huaxingtianxia/p/6703315.html 我们通常都会在APP上线之后,发现各种错误,尤其是空指针异常,这些错误 ...