您的位置:首页 > 其它

仿qq记录历史账号

2015-10-27 16:05 239 查看


<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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: