package com.android.test.login;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Set;
import util.ImagedbUtil;
import util.QQ;
import android.app.Activity;
import android.database.Cursor;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnFocusChangeListener;
import android.view.View.OnTouchListener;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;
import android.widget.ListView;
import android.widget.PopupWindow;
import android.widget.TextView;
public class Date extends Activity implements OnClickListener,OnFocusChangeListener {
@Override
public void onFocusChange(View v, boolean hasFocus) {
// TODO Auto-generated method stub
switch(v.getId()){
case R.id.login_edit_pwd:
if(hasFocus){//获得焦点,则获得密码
String account=mAccountsEditText.getText().toString();
if(account.equals("")){
break;//
}
if(list.containsKey(account)){
mPassEditText.setText(list.get(account));
}
}
break;
case R.id.login_edit_account:
if(hasFocus){
mAccountsEditText.setText("");
mPassEditText.setText("");
}
break;
}
}
//
ListView listView;
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch(v.getId()){
case R.id.popupwindow:
if(pop==null){
if(adapter==null){
adapter=new myAdapter();
listView=new ListView(Date.this);
pop=new PopupWindow(listView, mAccountsEditText.getWidth(), LayoutParams.WRAP_CONTENT);
listView.setAdapter(adapter);
pop.showAsDropDown(mAccountsEditText);
}
else{
account=list.keySet().toArray();
adapter.notifyDataSetChanged();
pop=new PopupWindow(listView, mAccountsEditText.getWidth(), LayoutParams.WRAP_CONTENT);
pop.showAsDropDown(mAccountsEditText);
}
}
else{
pop.dismiss();
pop=null;
}
break;
case R.id.login_btn_login:
if(mAccountsEditText.getText().toString().equals("")){
break;
}
String account=mAccountsEditText.getText().toString();
String pass=mPassEditText.getText().toString();
ImagedbUtil db=new ImagedbUtil(Date.this);
db.open();
Cursor cursor=db.getCursorArgs(new String[]{db.getKEY()}, new String[]{account});
int keyindex=cursor.getColumnIndexOrThrow(db.getKEY());
if(mRemPassCheck.isChecked()){
//保存密码
if(cursor.getCount()>0){
int id=cursor.getInt(keyindex);
safeReleaseCursor(cursor);
db.update(id, pass);
safeReleaseDatabase(db);
}
else {
safeReleaseCursor(cursor);
db.create(account, pass);
safeReleaseDatabase(db);
}
list.put(account, pass);//重新替换或者添加记录
}
else{
//不保存密码
if(cursor.getCount()>0){
int id=cursor.getInt(keyindex);
safeReleaseCursor(cursor);
db.update(id, "");
safeReleaseDatabase(db);
}
else {
safeReleaseCursor(cursor);
db.create(account, "");
safeReleaseDatabase(db);
}
list.put(account, "");//重新替换或者添加记录
}
mAccountsEditText.setText("");
mPassEditText.setText("");
break;
}
}
LinearLayout popupLinear;
ImageButton mPopupImageButton;
public PopupWindow pop;
public EditText mAccountsEditText;
EditText mPassEditText;
CheckBox mRemPassCheck;
Button mLoginButton;
public myAdapter adapter;
public HashMap<String,String> list;
Object[] account;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.loginpage);
prepare();
mPopupImageButton=(ImageButton)findViewById(R.id.popupwindow);
mRemPassCheck=(CheckBox)findViewById(R.id.login_cb_savepwd);
mLoginButton=(Button)findViewById(R.id.login_btn_login);
mAccountsEditText=(EditText)findViewById(R.id.login_edit_account);
mPassEditText=(EditText)findViewById(R.id.login_edit_pwd);
mPassEditText.setOnFocusChangeListener(this);
mAccountsEditText.setOnFocusChangeListener(this);
mPopupImageButton.setOnClickListener(this);
mLoginButton.setOnClickListener(this);
}
private void prepare(){
list=new HashMap<String, String>();
ImagedbUtil db=new ImagedbUtil(this);
db.open();
Cursor cursor=db.getCursor(db.getKEY(),db.getACCOUNTS(),db.getPASSWORD());
int accountsindex=cursor.getColumnIndexOrThrow(db.getACCOUNTS());
int passindex=cursor.getColumnIndexOrThrow(db.getPASSWORD());
String accounts;
String pass;
if(cursor.getCount()>0){
do{
accounts=cursor.getString(accountsindex);
pass=cursor.getString(passindex);
list.put(accounts, pass);
}while(cursor.moveToNext());
}
safeReleaseCursor(cursor);
safeReleaseDatabase(db);
}
private void safeReleaseCursor(Cursor cursor){
cursor.close();
cursor=null;
}
private void safeReleaseDatabase(ImagedbUtil db){
db.close();
db=null;
}
class myAdapter extends BaseAdapter {
LayoutInflater mInflater;
public myAdapter() {
mInflater=LayoutInflater.from(Date.this);
account=list.keySet().toArray();
// TODO Auto-generated constructor stub
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return account.length;
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
Holder holder=null;
if(convertView==null){
convertView=mInflater.inflate(R.layout.popup, null);
holder=new Holder();
holder.view=(TextView)convertView.findViewById(R.id.mQQ);
holder.button=(ImageButton)convertView.findViewById(R.id.mQQDelete);
convertView.setTag(holder);
}
else{
holder=(Holder) convertView.getTag();
}
if(holder!=null){
convertView.setId(position);
holder.setId(position);
holder.view.setText(account[position].toString());
holder.view.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
pop.dismiss();
mAccountsEditText.setText(account[position].toString());
mPassEditText.setText(list.get(account[position]));
return true;
}
});
holder.button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String accounts=account[position].toString();
list.remove(accounts);
ImagedbUtil db=new ImagedbUtil(Date.this);
db.open();
Cursor cursor=db.getCursorArgs(new String[]{db.getKEY()}, new String[]{accounts});
int keyindex=cursor.getColumnIndexOrThrow(db.getKEY());
int id=cursor.getInt(keyindex);
cursor.close();
db.delete(id);
account=list.keySet().toArray();
adapter.notifyDataSetChanged();
}
});
}
return convertView;
}
class Holder{
TextView view;
ImageButton button;
void setId(int position){
view.setId(position);
button.setId(position);
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
android QQ界面和部分逻辑(更新,使用Map显示下拉框
共62个文件
png:22个
class:16个
xml:12个
5星 · 超过95%的资源 需积分: 9 66 下载量 149 浏览量
2013-03-27
10:25:09
上传
评论
收藏 1.1MB RAR 举报
温馨提示
android QQ界面和部分逻辑(更新,使用Map显示下拉框 android QQ界面和部分逻辑(更新,使用Map显示下拉框
资源推荐
资源详情
资源评论
收起资源包目录
android QQ界面和部分逻辑(更新,使用Map显示下拉框).rar (62个子文件)
TestLogin
bin
classes.dex 16KB
com
android
testdate
test
login
Date$myAdapter.class 3KB
Date$myAdapter$Holder.class 880B
R$layout.class 468B
R$id.class 1KB
R$drawable.class 1KB
Date$myAdapter$1.class 2KB
R$attr.class 352B
R.class 663B
Date$myAdapter$2.class 2KB
R$string.class 773B
R$color.class 421B
R$style.class 409B
Date.class 5KB
resources.ap_ 373KB
TestLogin.apk 385KB
util
QQ.class 313B
ImagedbUtil$DatabaseHelper.class 1KB
ImagedbUtil.class 6KB
res
drawable-ldpi
icon.png 2KB
drawable-hdpi
default_bg_hdpi.png 217KB
icon.png 4KB
color
qq_checkbox_text_color.xml 264B
values
strings.xml 647B
styles.xml 418B
drawable-mdpi
button2_down.png 1KB
default_bg.png 111KB
login_head.xml 401B
h001.png 3KB
faceback.png 3KB
qq_edit_login.xml 377B
option_normal.png 629B
btn_check_off_pressed.png 557B
option_selected.png 2KB
more_select.xml 404B
btn_check_on_selected.png 1KB
button2.png 413B
icon.png 3KB
bottom.9.png 372B
delete.jpg 737B
btn_check_on.png 872B
option.xml 416B
qq_btn_check.xml 1KB
input_over.9.png 1KB
btn_check_off.png 331B
btn_check_on_pressed.png 1KB
button2_over.png 901B
btn_check_off_selected.png 1024B
header.jpg 1KB
login_input.9.png 483B
login_back.9.png 1KB
layout
main.xml 402B
popup.xml 818B
loginpage.xml 6KB
assets
default.properties 364B
gen
com
android
testdate
test
login
R.java 4KB
src
com
android
test
login
Date.java 8KB
util
QQ.java 104B
ImagedbUtil.java 5KB
.project 845B
.classpath 280B
AndroidManifest.xml 639B
共 62 条
- 1
资源评论
- 所为2015-08-06刚开始学习;尝试中,感谢分享
普通网友
- 粉丝: 203
- 资源: 132
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功