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】——Hibernate实现简单的自动建表
[与ORM] Object Relational Mapping,对象关系映射,将对象和关系联系了起来.面向对象是从耦合.聚合.封装等的基础上发展起来的,而关系数据库则是从数学理论发展而来的,两套理论 ...
- 《深入浅出 Java Concurrency》—并发容器 ConcurrentMap
(转自:http://blog.csdn.net/fg2006/article/details/6404226) 在JDK 1.4以下只有Vector和Hashtable是线程安全的集合(也称并发容器 ...
- NotifyIcon控件
NotifyIcon就是系统托盘控件.通知区域中的图标是一些进程的快捷方式,这些进程在计算机后台运行,如防病毒程序或音量控制.这些进程不会具有自己的用户界面.NotifyIcon 类提供了编写此功能的 ...
- Str 函数
Str 函数 Visual Studio 2005 返回数字的 String 表示形式. Public Shared Function Str(ByVal Number As Object) ...
- CF#366 704D Captain America 上下界网络流
CF上的题,就不放链接了,打开太慢,直接上题面吧: 平面上有n个点, 第 i 个点的坐标为 ($X_i ,Y_i$), 你需要把每个点染成红色或者蓝色, 染成红色的花费为 r , 染成蓝色的花费为 b ...
- visio应用程序相关设置-选项-视图
1.是否显示"新建"选项卡,可读/写 ApplicationSettings.ShowChooseDrawingTypePane m_Visio.Window.Applicatio ...
- vue 时间戳转 YYYY-MM-DD h:m:s
export default function(data = 1){ let myDate; if(data !== 1){ myDate = new Date(data * 1000); }else ...
- oracle与mysql的group by语句
之所以去纠那么细节的问题,是因为之前有过一个这样的场景: 有个同学,给了一条数据库的语句给我,问,为啥这样子的语句在oracle语句下执行不了. 1 select * from xx where xx ...
- mycat 管理MySQL5.7主从搭建
1.首先安装MySQL ab: 192.168.6.163 master 192.168.6.167 slave master: vi /etc/opt/rh/rh-mysql57/my.cnf.d/ ...
- css中文本超出部分省略号代替
p{ width: 100px; //设置p标签宽度 white-space: nowrap; //文本超出P标签宽度不换行,而是溢出 overflow: hidden; //文本超出P标签,超出部分 ...