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,在该类中创建无参数的构造方法,在构造 ...
随机推荐
- 【SSH】——封装参数不确定的分页查询
[前言] 在BS中,分页技术的应用相当频繁.说到分页,简单的分页就很好实现了,如果在分页的基础上再加上业务逻辑,这就使得分页的技术更加的灵活了. [简单分页] 我们先看一种简单的分页,为了做到复用,我 ...
- Javascript Array和String的互转换
Array类可以如下定义: var aValues = new Array(); 如果预先知道数组的长度,可以用参数传递长度 var aValues = new Array(20); -------- ...
- Linux在线用户通信
1,/etc/motd文件 该文件即 message of today(布告栏信息),每次用户登录时,/etc/motd文件的内容会显示在用户的终端.系统管理员可以在文件中编辑系统活动消息 即像公告栏 ...
- Flink之状态之状态存储 state backends
流计算中可能有各种方式来保存状态: 窗口操作 使用 了KV操作的函数 继承了CheckpointedFunction的函数 当开始做checkpointing的时候,状态会被持久化到checkpoin ...
- 51nod 1779逆序对统计(状压DP)
按照插入数的大小排序, 然后依次进行dp. 用一个状态表示n个数是否被选了 10110 就是表示第1.3.4个位置都选了 那么如果此时这个数该填到5这个位置,那么必定会造成一个逆序(因为下一个数会填到 ...
- [CF45G]Prime Problem
题目大意:将$1$到$n(1<n\leqslant6000)$分成若干组数,要求每组数的和均为质数,若存在一种分配方式,输出每个数所在的组的编号,有多组解输出任意一组解,若不存在,输出$-1$ ...
- 停课day1
一早上只做了一个calculator 还是参照题解,好惭愧 f[1]=0; flag[1]=true; for (int i=2,N=num[n];i<p;i++) { fo ...
- 【BZOJ 1409】 Password 数论(扩展欧拉+矩阵快速幂+快速幂)
读了一下题就会很愉快的发现,这个数列是关于p的幂次的斐波那契数列,很愉快,然后就很愉快的发现可以矩阵快速幂一波,然后再一看数据范围就......然后由于上帝与集合对我的正确启示,我就发现这个东西可以用 ...
- 使用命令wsimport生成WebService客户端
使用命令wsimport生成WebService客户端 wsimpost命令有几个重要的参数: -keep:是否生成java源文件 -d:指定输出目录 -s:指定源代码输出目录 -p ...
- WEB-INF 有关的目录路径问题总结
1.资源文件只能放在WebContent下面,如 CSS,JS,image等.放在WEB-INF下引用不了. 2.页面放在WEB-INF目录下面,这样可以限制访问,提高安全性.如JSP,html 3. ...