首先是从数据库中获取所有的账户记录然后设置默认选中的用户账号代码如下:

private void initUser(){//获取账号列表dbHelper=new DataHelper(this);userList = dbHelper.GetUserList(false);if(userList.isEmpty()){Intent intent = new Intent();intent.setClass(LoginActivity.this, AuthorizeActivity.class);startActivity(intent);}else{SharedPreferences preferences = getSharedPreferences(Select_Name, Activity.MODE_PRIVATE);String str= preferences.getString("name", "");UserInfo user=null;if(str!=""){user=GetUserByName(str);}if(user==null){user=userList.get(0);}icon.setImageDrawable(user.getUserIcon());iconSelect.setText(user.getUserName());}}

这个initUser() 初始账号的方法在LoginActivity的onCreate中调用,主要完成两件事情,第一件获取通过userList = dbHelper.GetUserList(false);获取所有的账户记录,关于DataHelper前面已经有说过了,如果获取的用户记录为空那么就跳转到用户授权功能页面让用户添加账号,如果不为空那么通过SharedPreferences去读取用户上一次选择的账号名称,如果没有或者数据库里账号记录不包括这个账户名称那么默认显示记录的第一个账号和头像,如果有那么显示这个账户的名称和头像。关于SharedPreferences,是android提供给开发者用来存储一些简单的数据用的,非常方便类似于网站的Cookie,在这里我就是用这个来保存上一次用户选择的是哪个账号,非常实用。

接下类首先为Id为list的ListView控件准备数据Adapter,这个Adapter非常简单就是普通的adapter继承BaseAdapter即可,代码如下:

public class UserAdapater extends BaseAdapter{@Overridepublic int getCount() {return userList.size();}@Overridepublic Object getItem(int position) {return userList.get(position);}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {convertView = LayoutInflater.from(getApplicationContext()).inflate(R.layout.item_user, null);ImageView iv = (ImageView) convertView.findViewById(R.id.iconImg);TextView tv = (TextView) convertView.findViewById(R.id.showName);UserInfo user = userList.get(position);try {//设置图片显示iv.setImageDrawable(user.getUserIcon());//设置信息tv.setText(user.getUserName());} catch (Exception e) {e.printStackTrace();}return convertView;}

接下就是为这个ListView设定数据源Adapter,在账号选择窗口显示的时候进行设置,添加到 id为iconSelectBtn的ImageButton的 OnClickListener中代码如下

ImageButton iconSelectBtn=(ImageButton)findViewById(R.id.iconSelectBtn);
iconSelectBtn.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v) {......dialog.show();UserAdapater adapater = new UserAdapater();ListView listview=(ListView)diaView.findViewById(R.id.list);listview.setVerticalScrollBarEnabled(false);// ListView去掉下拉条listview.setAdapter(adapater);listview.setOnItemClickListener(new OnItemClickListener(){@Overridepublic void onItemClick(AdapterView<?> arg0, View view,int arg2, long arg3) {TextView tv=(TextView)view.findViewById(R.id.showName);iconSelect.setText(tv.getText());ImageView iv=(ImageView)view.findViewById(R.id.iconImg);icon.setImageDrawable(iv.getDrawable());dialog.dismiss();}});}});

通过上面代码完成了账号选择的功能,接下来给id为login的ImageButton添加OnClickListener,使得点击后以当前选择账号进入微博首页,代码如下:

@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.login);......ImageButton login=(ImageButton)findViewById(R.id.login);login.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v) {GoHome();}});
}//进入用户首页
private void GoHome(){if(userList!=null){String name=iconSelect.getText().toString();UserInfo u=GetUserByName(name);if(u!=null){ConfigHelper.nowUser=u;//获取当前选择的用户并且保存}}if(ConfigHelper.nowUser!=null){//进入用户首页Intent intent = new Intent();intent.setClass(LoginActivity.this, HomeActivity.class);startActivity(intent);}}

在上面的GoHome方法中ConfigHelper.nowUser是类型为UserInfo的static类型用来保存当前登录账号的信息,替代web中session使用。

最后添加如下方法,用来当这个登录LoginActivity结束的时候保存当前选择的账户名称到SharedPreferences中,以便帮用户记住登录账号的功能,就是前面的initUser() 初始账号的方法中会获取保存在SharedPreferences中的账户名称,代码如下:

@Overrideprotected void onStop() {//获得SharedPreferences对象SharedPreferences MyPreferences = getSharedPreferences(Select_Name, Activity.MODE_PRIVATE);//获得SharedPreferences.Editor对象SharedPreferences.Editor editor = MyPreferences.edit();//保存组件中的值editor.putString("name", iconSelect.getText().toString());editor.commit();super.onStop();}

android开发我的新浪微博客户端-登录页面功能篇相关推荐

  1. android开发我的新浪微博客户端-登录页面功能篇(4.2)

    上一篇中完成了如上图的UI部分的实现,现在继续来讲功能的实现,用户登录操作主要就是账号列表显示和选择账号登录两个功能其他的都是些简单的辅助功能,首先是点击id为iconSelectBtn的ImageB ...

  2. android开发我的新浪微博客户端-登录页面UI篇(4.1)

    首先回顾一下功能流程当用户开启软件显示载入页面时程序首先去sqlite库查询是否已经保存有用户的新浪微博的UserID号.Access Token.Access Secret的记录如果没有一条记录那么 ...

  3. android开发我的新浪微博客户端系列教程

    android开发我的新浪微博客户端-载入页面UI篇(1.1)http://www.1000phone.net/thread-7750-1-1.html android开发我的新浪微博客户端-载入页面 ...

  4. android开发我的新浪微博客户端-用户授权页面UI篇(3.1)

    看上面的图,其实这个页面的UI实现不复杂,首先是背景部分的实现这个参考 android开发我的新浪微博客户端-载入页面UI篇(1.1),重点来讲讲这个半透明的弹出对话框窗口是如何实现的,首先新建名为A ...

  5. android开发我的新浪微博客户端-用户授权页面功能篇(3.2)

      ==> 在上一篇实现了用户授权页面的UI,如上图,接下来要做的就是在这个基础上完成功能部分真正实现用户的授权认证,这一篇是android开发我的新浪微博客户端-OAuth篇(2.1)的具体应 ...

  6. android 除了webview 浏览器控件,android开发我的新浪微博客户端-OAuth认证过程中用WebView代替原来的系统自带浏览器...

    前面的文章的OAuth认证过程在获取oauth_verifier码是是通过调用android系统带的浏览器进行用户授权认证的, 具体见:android开发我的新浪微博客户端-用户授权页面功能篇(3.2 ...

  7. android实现新闻内容显示功能,Android开发实现自定义新闻加载页面功能实例

    本文实例讲述了Android开发实现自定义新闻加载页面功能.分享给大家供大家参考,具体如下: 一.概述: 1.效果演示: 2.说明:在新闻页面刚加载的时候,一般会出现五种状态 未知状态(STATE_U ...

  8. android开发我的新浪微博客户端-OAuth篇(2.1)

    本篇说说关于OAuth授权认证的事情,新浪开放api都必须在这个基础上才能调用,所以有必要专门来讲讲,前面的文章中已经提到过关于新浪微博提供了OAuth和Base OAuth两种认证方式,并且本项目采 ...

  9. iphone开发我的新浪微博客户端-用户登录准备篇(1.1)

    首先说一下我这个的实现思路,登录支持多个账号,也就是说可以保存多个微博账号登录的时候选择其中一个登录.多个账号信息保存在sqlite的数据库中, 每一个账号信息就是一条记录, 当用户启动微博客户端的时 ...

最新文章

  1. 已知2个整形数据a,b.不使用if,?:以及其他任何条件判断的语法,找出a跟b中数据的大者。
  2. U-LanD:基于不确定性的视频地标检测
  3. weifenluo与notifyIcon小细节
  4. c++多个对象构造和析构
  5. WEBBASE篇: 第八篇, JavaScript知识2
  6. 竞价账户烧钱的七大病因和处理办法
  7. Oracle/Mysql查看锁表与解锁表
  8. 旅游规划(双权连通图)
  9. Redis的数据类型及其常用命令
  10. 「代码随想录」96.不同的二叉搜索树【动态规划】详解!
  11. C++调用编译好的darknet来进行物体监测
  12. 吴恩达机器学习作业(1)
  13. Proteus8.6 安装教程
  14. 在chinapub上搜“搜索引擎”,按照销量排序《搜索引擎零距离》居然是第一
  15. 移动端UML图应用之UML图简述
  16. PS2手柄通讯协议解析---附资料和源码
  17. 离散傅里叶变换的核心公式
  18. .styl格式的CSS样式文件是什么文件
  19. Android Behavior
  20. 信号在PCB走线中的延迟

热门文章

  1. Springboot项目配置oracle数据库
  2. 微信小程序自定义组件实现普通页面onShow效果初始化组件内部数据
  3. 做MRI检查,为什么要去除所有金属附属物
  4. C++数据类型转化使用方法,static_cast,dynamic_cast,dynamic_pointer_cast,dynamic_pointer_cast等
  5. MySQL 中 where id in (1,2,3,4,...) 的效率问题讨论
  6. 如何查找最近最快的dns服务器,怎样找到速度最快的DNS?一招教你网速快到不行!...
  7. 用js在页面中创建svg标签不显示的问题
  8. 用英语简述计算机的启动过程,计算机的启动过程(详细)
  9. 阿里十年架构师教你如何学会阅读源码
  10. UnityShader_泳池实现