仿qq记录历史账号
来源:互联网 发布:淘宝的老凤祥是真的吗 编辑:程序博客网 时间:2024/04/27 18:37
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" > <RelativeLayout android:id="@+id/login_layout" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:paddingTop="70dip" > <TextView android:id="@+id/login_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Login" android:textColor="#716b60" android:textSize="20sp" /> <FrameLayout android:id="@+id/username_layout" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/login_text" > <EditText android:id="@+id/username" android:layout_width="300dip" android:layout_height="50dip" android:hint="Please input your username" android:background="@drawable/login_input" android:contentDescription="@string/app_name" /> <ImageButton android:id="@+id/dropdown_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="right|center_vertical" android:layout_marginRight="5dip" android:background="@drawable/login_input_arrow" android:contentDescription="@string/app_name" /> </FrameLayout> <EditText android:id="@+id/password" android:layout_width="300dip" android:layout_height="50dip" android:layout_below="@id/username_layout" android:background="@drawable/login_input" android:hint="please input your password" android:inputType="textPassword" /> <RelativeLayout android:id="@+id/remember_layout" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/password" android:layout_marginLeft="10dip" > <Button android:id="@+id/login" android:layout_width="300dip" android:layout_height="50dip" android:layout_marginTop="20dip" android:background="@drawable/login_selected" android:text="Login" /> </RelativeLayout> </RelativeLayout></RelativeLayout>
MainActivity
这里写代码片public class MainActivity extends Activity implements OnClickListener { private EditText mUserName; private EditText mPassword; private Button mLoginButton; private ImageButton mDropDown; private DBHelper dbHelper; private PopupWindow pop; private MyAdapter myAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initWidget(); } private void initWidget() { dbHelper = new DBHelper(this); mUserName = (EditText) findViewById(R.id.username); mPassword = (EditText) findViewById(R.id.password); mLoginButton = (Button) findViewById(R.id.login); mDropDown = (ImageButton) findViewById(R.id.dropdown_button); mLoginButton.setOnClickListener(this); mDropDown.setOnClickListener(this); initLoginUserName(); } private void initLoginUserName() { // TODO Auto-generated method stub List<String> usernames = dbHelper.queryAllUserName(); if (usernames.size() > 0) { String tempName = usernames.get(usernames.size() - 1); mUserName.setText(tempName); mPassword.setText(null); } mUserName.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { // TODO Auto-generated method stub mPassword.setText(""); } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { // TODO Auto-generated method stub } @Override public void afterTextChanged(Editable s) { // TODO Auto-generated method stub } }); } @Override public void onClick(View v) { // TODO Auto-generated method stub switch (v.getId()) { case R.id.login: String username = mUserName.getText().toString(); String password = mPassword.getText().toString(); dbHelper.insertOrUpdate(username); myAdapter.notifyDataSetChanged(); break; case R.id.dropdown_button: if (pop != null) { // initPop(); if (!pop.isShowing()) { pop.showAsDropDown(mUserName); } else { pop.dismiss(); } } else { initPop(); if (!pop.isShowing()) { pop.showAsDropDown(mUserName); } else { pop.dismiss(); } } break; default: break; } } private void initPop() { View view = LayoutInflater.from(MainActivity.this).inflate(R.layout.lv, null); ListView lv = (ListView) view.findViewById(R.id.lv); List<String> usernames = dbHelper.queryAllUserName(); myAdapter = new MyAdapter(MainActivity.this, usernames); lv.setAdapter(myAdapter); pop = new PopupWindow(MainActivity.this); pop.setContentView(view); pop.setWidth(mUserName.getWidth()); pop.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT); pop.setFocusable(true); pop.setOutsideTouchable(true); pop.setBackgroundDrawable(getResources().getDrawable(R.drawable.white)); } public class MyAdapter extends BaseAdapter { private List<String> list; public MyAdapter(MainActivity mainActivity, List<String> usernames) { // TODO Auto-generated constructor stub this.list = usernames; } @Override public int getCount() { // TODO Auto-generated method stub return list.size(); } @Override public Object getItem(int position) { // TODO Auto-generated method stub return list.get(position); } @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 ViewHolder holder; if (convertView == null) { holder = new ViewHolder(); convertView = LayoutInflater.from(MainActivity.this).inflate( R.layout.dropview_item, null); holder.tv = (TextView) convertView.findViewById(R.id.textView); holder.iv = (ImageView) convertView.findViewById(R.id.delete); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } holder.tv.setText(list.get(position)); holder.tv.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub mUserName.setText(list.get(position)); // list.remove(position); // notifyDataSetChanged(); pop.dismiss(); } }); holder.iv.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub dbHelper.delete(list.get(position)); list.remove(position); notifyDataSetChanged(); } }); return convertView; } class ViewHolder { TextView tv; ImageView iv; } }}
数据库帮助类
public class DBHelper { public static final int DB_VERSION = 1; public static final String DB_NAME = "example.db"; public static final String USER_TABLE_NAME = "user_table"; public static final String[] USER_COLS = { User.USERNAME }; private SQLiteDatabase db; private DBOpenHelper dbOperHelper; public DBHelper(Context context) { this.dbOperHelper = new DBOpenHelper(context); if (this.db == null) { this.db = this.dbOperHelper.getWritableDatabase(); } } /** * 添加一条记录 * * @param userName * @param password * @return */ public long insertOrUpdate(String userName) { boolean isUpdate = false; // String usernames[] = queryAllUserName(); List<String> usernames = queryAllUserName(); // for (int i = 0; i < usernames.length; i++) { // // if (userName.equals(usernames[i])) { // isUpdate = true; // } // } for (int i = 0; i < usernames.size(); i++) { if (userName.equals(usernames.get(i))) { isUpdate = true; } } long id = -1; if (isUpdate) { id = update(userName); } else { if (db != null) { ContentValues values = new ContentValues(); values.put(User.USERNAME, userName); // values.put(User.PASSWORD, password); id = db.insert(USER_TABLE_NAME, null, values); } } return id; } /** * 删除一条记录 * * @param userName * @return */ public long delete(String userName) { int id = db.delete(USER_TABLE_NAME, User.USERNAME + " = '" + userName + "'", null); return id; } /** * 更新表 * * @param username * @param password * @return */ public long update(String username) { ContentValues values = new ContentValues(); values.put(User.USERNAME, username); // values.put(User.PASSWORD, password); long id = db.update(USER_TABLE_NAME, values, User.USERNAME + " = '" + username + "'", null); return id; } /** * 查询表中所有的用户名 * * @return */ public List<String> queryAllUserName() { List<String> list = new ArrayList<String>(); if (db != null) { Cursor cursor = db.query(USER_TABLE_NAME, null, null, null, null, null, null); int count = cursor.getCount(); // String[] userNames = new String[count]; if (count > 0) { cursor.moveToFirst(); for (int i = 0; i < count; i++) { // userNames[i] = cursor.getString(cursor // .getColumnIndex(User.USERNAME)); list.add(cursor.getString(cursor .getColumnIndex(User.USERNAME))); cursor.moveToNext(); } } return list; } else { return list; } } // public int queryIsSavedByName(String username) { // // String sql = "select * from " + USER_TABLE_NAME + " where " // + User.USERNAME + " = '" + username + "'"; // Cursor cursor = db.rawQuery(sql, null); // int isSaved = 0; // // if (cursor.getCount() > 0) { // cursor.moveToFirst(); // isSaved = cursor.getInt(cursor.getColumnIndex(User.ISSaved)); // // } // return isSaved; // } // public String queryPasswordByName(String username) { // String sql = "select * from " + USER_TABLE_NAME + " where " // + User.USERNAME + " = '" + username + "'"; // Cursor cursor = db.rawQuery(sql, null); // // String password = ""; // if (cursor.getCount() > 0) { // // cursor.moveToFirst(); // password = cursor.getString(cursor // .getColumnIndexOrThrow(User.PASSWORD)); // } // return password; // } public void cleanup() { if (this.db != null) { this.db.close(); this.db = null; } } private static class DBOpenHelper extends SQLiteOpenHelper { public DBOpenHelper(Context context) { super(context, DB_NAME, null, DB_VERSION); } @Override public void onCreate(SQLiteDatabase db) { // TODO Auto-generated method stub // db.execSQL("create table " + USER_TABLE_NAME + " (" + User._ID // + " integer primary key, " + User.USERNAME + " text, " // + User.PASSWORD + " text, " + User.ISSaved + " INTEGER"); // db.execSQL("create table " + USER_TABLE_NAME + " (" + User._ID // + " integer primary key, " + User.USERNAME + " text, " // + User.PASSWORD + " text, " + User.ISSaved + " INTEGER) "); db.execSQL("create table " + USER_TABLE_NAME + " (" + User._ID + " integer primary key, " + User.USERNAME + " text) "); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // TODO Auto-generated method stub db.execSQL("DROP TABLE IF EXISTS " + USER_TABLE_NAME); onCreate(db); } }}
源代码地址
http://download.csdn.net/download/plj208/9217283
0 0
- 仿qq记录历史账号
- android实现仿QQ登陆界面的多账号保存
- 仿QQ登录(账号列表并可编辑)
- android实现仿QQ登陆界面的多账号保存
- android实现仿QQ登陆界面的多账号保存
- 仿QQ的密码保存,点击按钮选择其他账号
- Java swing 仿QQ实现账号密码输入框
- Html(仿QQ登录WEB网页编写)小小记录
- android 用sharepreferences实现仿QQ登录多账号的保存的效果
- 截获局域网QQ账号
- 截获局域网QQ账号
- 用QQ账号登陆
- 和×××的历史qq
- 仿QQ导航菜单
- 仿QQ导航菜单
- 仿QQ窗口代码
- 仿QQ导航菜单
- 仿QQ下拉菜单
- Listview or GridView中嵌套cardview解决方案
- python与zmq系列(2)
- 如何在docker容器中运行一个程序
- Android开发,将图片(bitmap)变成圆形图片、图片文件变成bitmap的方法
- 解决jenkins打包时不能及时更新到最新代码的问题
- 仿qq记录历史账号
- 041.extension 类的拓展
- linux系统安装(二)-远程登录管理工具SecureCRT
- 我读过的几本java好书
- MQTT学习笔记-MQTT简要介绍
- mysql删除表的一列或者修改一列的名称和属性
- 040.category 调用私有方法
- 新泽西博彩监管机构发布扑克之星报告
- 编译工具设置