<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);
}
}
}