仿qq记录历史账号

主页面

<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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值