写完发现代码有点多,各位提前给各位看官预警。。
文末我会把Android studio包和apk包连接贴出来。
首先创建sqlite数据库:
我创建了一个用户表和一个密码表
package mountain_hua.pwd; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.widget.Toast; /** * Created by dhs on 2018/3/13. */ public class MyDatabaseHelper extends SQLiteOpenHelper { //用户表 public static final String CREATE_usersBD = "create table usersBD(" + "pwd1 text primary key," + "pwd2 text)"; //密码表 public static final String CREATE_pwdsBD = "create table pwdsBD(" + "id integer primary key autoincrement," + "name text," + "adr text," + "pwd text," + "desc text)"; private Context mContext; //构造方法:第一个参数Context,第二个参数数据库名,第三个参数cursor允许我们在查询数据的时候返回一个自定义的光标位置,一般传入的都是null,第四个参数表示目前库的版本号(用于对库进行升级) public MyDatabaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory , int version){ super(context,name ,factory,version); mContext = context; } @Override public void onCreate(SQLiteDatabase db) { //调用SQLiteDatabase中的execSQL()执行建表语句。 db.execSQL(CREATE_usersBD); db.execSQL(CREATE_pwdsBD); //创建成功 //Toast.makeText(mContext, "Create succeeded", Toast.LENGTH_SHORT).show(); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("drop table if exists usersBD"); db.execSQL("drop table if exists pwdsBD"); onCreate(db); } }
然后是登录/注册界面,首先检查用户表是否为空,如果为空的话就进入注册界面;如果不为空,则进入登录界面。
代码如下:
package mountain_hua.pwd; import android.content.Intent; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class MainActivity extends AppCompatActivity { private MyDatabaseHelper dbhelper; private int ck=0;//检查是否注册 private String pwd1; private String pwd2; private MyDatabaseHelper dbHelper; private String gpwd1; @Override protected void onCreate(Bundle savedInstanceState) { if_log(); if(ck==1)//注册后执行 { super.onCreate(savedInstanceState); setContentView(R.layout.denglu); //设置按钮监听 Button t2=(Button)findViewById(R.id.button7); t2.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View view) { String t1=((EditText)findViewById(R.id.editText4)).getText().toString(); //判断密码是否正确 if(query1().equals(t1)){ Intent it2=new Intent(); it2.setClass(MainActivity.this,menu1.class); startActivity(it2); } else { Toast.makeText(MainActivity.this,"一级密码不对",Toast.LENGTH_SHORT).show(); } } }); } else//未注册执行 { super.onCreate(savedInstanceState); setContentView(R.layout.zhuce1); //设置按钮监听 Button t1=(Button)findViewById(R.id.button2); t1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { pwd1 = ((EditText) findViewById(R.id.editText)).getText().toString(); pwd2 = ((EditText) findViewById(R.id.editText2)).getText().toString(); //输入为空判断 if (pwd1.length()==0){ Toast.makeText(MainActivity.this,"请输入一级密码",Toast.LENGTH_SHORT).show(); } else if (pwd2.length()==0){ Toast.makeText(MainActivity.this,"请输入二级密码",Toast.LENGTH_SHORT).show(); }else { Intent it1=new Intent(); it1.setClass(MainActivity.this,zhuce2.class); it1.putExtra("aa",pwd1); it1.putExtra("bb",pwd2); startActivity(it1); } } } ); } } //是否注册,查询用户表是否为空 public void if_log() { dbhelper = new MyDatabaseHelper(this, "usersBDD", null, 1); SQLiteDatabase db = dbhelper.getReadableDatabase(); int amount=0; Cursor c = db.rawQuery("select * from usersBD", null); amount=c.getCount(); if(amount==1){ ck=1; } c.close(); db.close(); } //登录时查询一级密码 public String query1(){ dbHelper = new MyDatabaseHelper(MainActivity.this,"usersBDD",null,1); SQLiteDatabase db = dbHelper.getWritableDatabase(); Cursor cursor = db.query("usersBD",null,null,null,null,null,null); //调用moveToFirst()将数据指针移动到第一行的位置。 if (cursor.moveToFirst()){ do { //然后通过Cursor的getColumnIndex()获取某一列中所对应的位置的索引 gpwd1 = cursor.getString(cursor.getColumnIndex("pwd1")); }while(cursor.moveToNext()); } cursor.close(); return gpwd1; } }然后是注册界面:用户输入一级密码和二级密码进行注册,并确认。注册成功后自动跳入登录界面,并且下次再进入程序后,直接进入登录界面,不会再出现注册界面,因为用户表不为空。
package mountain_hua.pwd; import android.content.ContentValues; import android.content.DialogInterface; import android.content.Intent; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Button; import android.widget.TextView; import android.widget.Toast; /** * Created by dhs on 2018/3/12. */ public class zhuce2 extends AppCompatActivity { private MyDatabaseHelper dbHelper; private int ck=0; //注册对话框: private DialogInterface.OnClickListener click1=new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface arg0,int arg1) { //确认注册后操作: dbHelper = new MyDatabaseHelper(zhuce2.this,"usersBDD",null,1); SQLiteDatabase db = dbHelper.getWritableDatabase(); ContentValues values = new ContentValues(); values.put("pwd1", getIntent().getStringExtra("aa")); values.put("pwd2", getIntent().getStringExtra("bb")); //insert()方法中第一个参数是表名,第二个参数是表示给表中未指定数据的自动赋值为NULL。第三个参数是一个ContentValues对象 db.insert("usersBD",null,values); Toast.makeText(zhuce2.this,"注册成功,即将进入登录界面",Toast.LENGTH_SHORT).show(); Intent it3=new Intent(); it3.setClass(zhuce2.this,MainActivity.class); startActivity(it3); //此处应该销毁当前activity } }; //取消对话框 private DialogInterface.OnClickListener click2=new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface arg0,int arg1) { arg0.cancel(); } }; // @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.zhuce2); TextView p1=(TextView)findViewById(R.id.textView3); String p11 = getIntent().getStringExtra("aa"); p1.setText(p11); TextView p2=(TextView)findViewById(R.id.textView5); String p22 = getIntent().getStringExtra("bb"); p2.setText(p22); //返回按钮监听 Button b1=(Button)findViewById(R.id.button); b1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) {//内容 finish(); } } ); //注册按钮监听 Button b3=(Button)findViewById(R.id.button3); b3.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) {//内容 if_log(); if(ck==1){ Toast.makeText(zhuce2.this,"您已经注册过了,请结束程序后进行登录!",Toast.LENGTH_LONG).show(); } else { showdialog(view); } } } ); } //设置对话框 public void showdialog(View view){ AlertDialog.Builder alertdialogbuilder=new AlertDialog.Builder(this); alertdialogbuilder.setMessage("确认注册?"); alertdialogbuilder.setPositiveButton("确定", click1); alertdialogbuilder.setNegativeButton("取消", click2); AlertDialog alertdialog1=alertdialogbuilder.create(); alertdialog1.show(); } //是否注册,查询用户表是否为空 public void if_log() { dbHelper = new MyDatabaseHelper(this, "usersBDD", null, 1); SQLiteDatabase db = dbHelper.getReadableDatabase(); int amount=0; Cursor c = db.rawQuery("select * from usersBD", null); amount=c.getCount(); if(amount==1){ ck=1; } c.close(); db.close(); } }
登录进去后,进入目录一,用户可以在此添加密码,可以看到我已经添加了很多密码了。
代码如下:
package mountain_hua.pwd; import android.content.Intent; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.ListView; import android.widget.Toast; import java.util.ArrayList; /** * Created by dhs on 2018/3/13. */ public class menu1 extends AppCompatActivity { private MyDatabaseHelper dbHelper; String rr; ArrayList pd=new ArrayList(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.menu1); pd.add("这里是您的私人密码小本本哦"); query2(); //适配器 final ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>( menu1.this, android.R.layout.simple_list_item_1, android.R.id.text1, pd ); // ListView listView= (ListView) findViewById(R.id.listview1); listView.setAdapter(arrayAdapter); //监听 listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { //点击后的操作 if(position!=0) { rr = arrayAdapter.getItem(position); Intent intent = new Intent(); intent.setClass(menu1.this, menu2_1.class); intent.putExtra("cc", rr);//传出adr intent.putExtra("pp",String.valueOf(position));//传出位置0,1,2.。。 startActivity(intent); Toast.makeText(menu1.this, arrayAdapter.getItem(position), Toast.LENGTH_SHORT).show(); } } }); //添加按钮 Button b3=(Button)findViewById(R.id.button8); b3.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) {//内容 Intent intent = new Intent(); intent.setClass(menu1.this,menu2.class); startActivity(intent); } } ); } public void query2(){ dbHelper = new MyDatabaseHelper(menu1.this,"usersBDD",null,1); SQLiteDatabase db = dbHelper.getWritableDatabase(); Cursor cursor = db.rawQuery("select * from pwdsBD", null); //调用moveToFirst()将数据指针移动到第一行的位置。 while (cursor.moveToNext()) { String adrs = cursor.getString(2);//获取第3列的值adr,第一列的索引从0开始 int id=cursor.getInt(0); if (id!=0) { pd.add(adrs); } } cursor.close(); db.close(); } //刷新listview @Override protected void onResume() { super.onResume(); pd.clear(); pd.add("这里是您的私人密码小本本哦"); query2(); //适配器 final ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>( menu1.this, android.R.layout.simple_list_item_1, android.R.id.text1, pd ); // ListView listView= (ListView) findViewById(R.id.listview1); listView.setAdapter(arrayAdapter); } }
然后可以添加密码:
点击添加密码进入添加密码页面,代码如下:
package mountain_hua.pwd; import android.content.ContentValues; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; /** * Created by dhs on 2018/3/14. */ public class menu2 extends AppCompatActivity { private MyDatabaseHelper pwdsDB; private String gadr; private String gname; private String gpwd; private String gdesc; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.menu2); //注册监听 //确认按钮 Button b3=(Button)findViewById(R.id.button6); b3.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) {//内容 gadr = ((EditText) findViewById(R.id.editText3)).getText().toString(); gname = ((EditText) findViewById(R.id.editText5)).getText().toString(); gpwd = ((EditText) findViewById(R.id.editText6)).getText().toString(); gdesc = ((EditText) findViewById(R.id.editText7)).getText().toString(); if(feikong()==1)//判断用户名密码非空 { pwdsDB = new MyDatabaseHelper(menu2.this,"usersBDD",null,1); SQLiteDatabase db = pwdsDB.getWritableDatabase(); ContentValues values = new ContentValues(); values.put("adr", gadr); values.put("name", gname); values.put("pwd", gpwd); values.put("desc", gdesc); //insert()方法中第一个参数是表名,第二个参数是表示给表中未指定数据的自动赋值为NULL。第三个参数是一个ContentValues对象 db.insert("pwdsBD",null,values); Toast.makeText(menu2.this,"添加成功",Toast.LENGTH_SHORT).show(); finish(); } } } ); //取消按钮 Button b4=(Button)findViewById(R.id.button10); b4.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) {//内容 finish(); } } ); } //name和pwd非空算法 public int feikong(){ int i=1; if(gname.length()==0){ i=0; Toast.makeText(menu2.this,"用户名不能为空",Toast.LENGTH_SHORT).show(); } else if(gpwd.length()==0){ i=0; Toast.makeText(menu2.this,"密码不能为空",Toast.LENGTH_SHORT).show(); } return i; } }
添加成功后,返回主页面就可以看到刚刚添加的密码。点击刚刚添加的密码可以进入详细信息页面,用textview.setKeyListener(null)方法设置密码不可修改,我加密了密码的中间字母,只能看到首字母和末尾的字母,在次可以选择选择修改(查看)或者删除,均需输入二级密码。
代码如下:
package mountain_hua.pwd; import android.content.ContentValues; import android.content.DialogInterface; import android.content.Intent; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; import android.text.TextUtils; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; import java.util.ArrayList; import static android.R.id.input; /** * Created by dhs on 2018/3/20. */ public class menu2_1 extends AppCompatActivity{ private MyDatabaseHelper dbHelper; private String gadr;//传入adr private String ard; private String name; private String pwd; private String desc; private String gpwd2; private String pos; private int ppp; int pp; private ArrayList idList=new ArrayList(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.menu2); gadr=getIntent().getStringExtra("cc");//传入adr pos=getIntent().getStringExtra("pp"); pp=Integer.valueOf(pos)-1;//传入位置 query323(); query3(); EditText ed3=(EditText)findViewById(R.id.editText3); ed3.setText(ard); ed3.setKeyListener(null); EditText ed5=(EditText)findViewById(R.id.editText5); ed5.setText(name); ed5.setKeyListener(null); EditText ed6=(EditText)findViewById(R.id.editText6); ed6.setText(jiami(pwd)); ed6.setKeyListener(null); EditText ed7=(EditText)findViewById(R.id.editText7); ed7.setText(desc); ed7.setKeyListener(null); //查看明文密码 Button b6=(Button)findViewById(R.id.button6); b6.setText("查看/修改"); b6.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) {//内容 query2(); dialog(); } } ); //删除按钮 Button b10=(Button)findViewById(R.id.button10); b10.setText("删除此密码"); b10.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) {//内容 query2(); dialog2(); } } ); } //查询 public void query3(){ dbHelper = new MyDatabaseHelper(menu2_1.this,"usersBDD",null,1); SQLiteDatabase db = dbHelper.getWritableDatabase(); Cursor cursor = db.rawQuery("select * from pwdsBD", null); //调用moveToFirst()将数据指针移动到第一行的位置。 while (cursor.moveToNext()) { pwd= cursor.getString(3);//获取第3列的值,第一列的索引从0开始 name=cursor.getString(1); ard=cursor.getString(2); desc=cursor.getString(4); ppp=cursor.getInt(0);//获取自增的ID if(idList.get(pp).equals(ppp)){ break; } } cursor.close(); db.close(); } //查看和修改的对话框 public void dialog(){ final EditText et = new EditText(this); final AlertDialog dialog = new AlertDialog.Builder(menu2_1.this) .setTitle("请输入二级密码") .setPositiveButton("确定", null) .setView(et) .setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }).create(); //这里必须要先调show()方法,后面的getButton才有效 dialog.show(); dialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String input = et.getText().toString(); if (!input.equals(gpwd2)) { Toast.makeText(getApplicationContext(), "二级密码不对!" , Toast.LENGTH_SHORT).show(); return; } else { Intent intent = new Intent(); intent.putExtra("dd", gadr); intent.putExtra("po", String.valueOf(idList.get(pp))); intent.setClass(menu2_1.this, menu2_2.class); startActivity(intent); finish(); } dialog.dismiss(); } }); } //删除的对话框 public void dialog2(){ final EditText et = new EditText(this); final AlertDialog dialog = new AlertDialog.Builder(menu2_1.this) .setTitle("请输入二级密码") .setPositiveButton("确认删除", null) .setView(et) .setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }).create(); //这里必须要先调show()方法,后面的getButton才有效 dialog.show(); dialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String input = et.getText().toString(); if (!input.equals(gpwd2)) { Toast.makeText(getApplicationContext(), "二级密码不对!" , Toast.LENGTH_SHORT).show(); return; } else { //删除表操作 query4(); finish(); Toast.makeText(getApplicationContext(), "删除成功!" , Toast.LENGTH_SHORT).show(); } dialog.dismiss(); } }); } //得到二级密码 public String query2(){ dbHelper = new MyDatabaseHelper(menu2_1.this,"usersBDD",null,1); SQLiteDatabase db = dbHelper.getWritableDatabase(); Cursor cursor = db.query("usersBD",null,null,null,null,null,null); //调用moveToFirst()将数据指针移动到第一行的位置。 if (cursor.moveToFirst()){ do { //然后通过Cursor的getColumnIndex()获取某一列中所对应的位置的索引 gpwd2 = cursor.getString(cursor.getColumnIndex("pwd2")); }while(cursor.moveToNext()); } cursor.close(); return gpwd2; } //删除表 public void query4(){ dbHelper = new MyDatabaseHelper(menu2_1.this,"usersBDD",null,1); SQLiteDatabase db = dbHelper.getWritableDatabase(); db.delete("pwdsBD","id=?",new String[] {String.valueOf(idList.get(pp))}); query32(); db.close(); } //创建数组 public void query323() { dbHelper = new MyDatabaseHelper(menu2_1.this, "usersBDD", null, 1); SQLiteDatabase db = dbHelper.getWritableDatabase(); Cursor cursor = db.query("pwdsBD", null, null, null, null, null, null); if (cursor != null && cursor.getCount() > 0) { while(cursor.moveToNext()) idList.add(cursor.getInt(0)); } cursor.close(); db.close(); } //修改ID,用于删除后执行 public void query32(){ dbHelper = new MyDatabaseHelper(menu2_1.this,"usersBDD",null,1); SQLiteDatabase db = dbHelper.getWritableDatabase(); Cursor cursor = db.query("pwdsBD",null,null,null,null,null,null); if(cursor != null && cursor.getCount()>0){ idList.removeAll(idList); while(cursor.moveToNext()) idList.add(cursor.getString(0)); } cursor.close(); db.close(); } //加密小算法 public String jiami(String ss){ int len=ss.length(); String after; String aa="*"; after = ss.charAt(0)+aa; if(ss.length()>=3) { for (int i = 1; i < len - 2; i++) { after = after + aa; } after = after + ss.charAt(len - 1); } return after; } }
然后是修改页面:此时可以看到全部密码信息,并且能进行修改。
代码如下:
package mountain_hua.pwd; import android.content.ContentValues; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; /** * Created by dhs on 2018/3/20. */ public class menu2_2 extends AppCompatActivity { private MyDatabaseHelper pwdsDB; private String ggadr; private String gadr; private String gname; private String gpwd; private String gdesc; private String ard; private String name; private String pwd; private String desc; private String pos; private int poss; private int id; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.menu2); ggadr=getIntent().getStringExtra("dd");//传入adr pos=getIntent().getStringExtra("po"); poss=Integer.valueOf(pos); query3(); EditText ed3=(EditText)findViewById(R.id.editText3); ed3.setText(ard); EditText ed5=(EditText)findViewById(R.id.editText5); ed5.setText(name); EditText ed6=(EditText)findViewById(R.id.editText6); ed6.setText(pwd); EditText ed7=(EditText)findViewById(R.id.editText7); ed7.setText(desc); //注册监听 //确认按钮 Button b3=(Button)findViewById(R.id.button6); b3.setText("确认修改"); b3.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) {//内容,应该为更新表 gadr = ((EditText) findViewById(R.id.editText3)).getText().toString(); gname = ((EditText) findViewById(R.id.editText5)).getText().toString(); gpwd = ((EditText) findViewById(R.id.editText6)).getText().toString(); gdesc = ((EditText) findViewById(R.id.editText7)).getText().toString(); if(feikong()==1) { pwdsDB = new MyDatabaseHelper(menu2_2.this, "usersBDD", null, 1); SQLiteDatabase db = pwdsDB.getWritableDatabase(); ContentValues values = new ContentValues(); values.put("adr", gadr); values.put("name", gname); values.put("pwd", gpwd); values.put("desc", gdesc); db.update("pwdsBD", values, "id=?", new String[]{String.valueOf(poss)}); if (gname.equals(name) & (gadr.equals(ard)) && gpwd.equals(pwd) & gdesc.equals(desc)) { Toast.makeText(menu2_2.this, "您未作出修改", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(menu2_2.this, "修改成功", Toast.LENGTH_SHORT).show(); } finish(); } } } ); //取消按钮 Button b4=(Button)findViewById(R.id.button10); b4.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) {//内容 finish(); } } ); } public void query3() { pwdsDB = new MyDatabaseHelper(menu2_2.this, "usersBDD", null, 1); SQLiteDatabase db = pwdsDB.getWritableDatabase(); Cursor cursor = db.rawQuery("select * from pwdsBD", null); //调用moveToFirst()将数据指针移动到第一行的位置。 while (cursor.moveToNext()) { pwd = cursor.getString(3);//获取第3列的值,第一列的索引从0开始 name = cursor.getString(1); ard = cursor.getString(2); desc = cursor.getString(4); id=cursor.getInt(0); if (id==poss){ break; } } } //name和pwd非空算法 public int feikong(){ int i=1; if(gname.length()==0){ i=0; Toast.makeText(menu2_2.this,"用户名不能为空",Toast.LENGTH_SHORT).show(); } else if(gpwd.length()==0){ i=0; Toast.makeText(menu2_2.this,"密码不能为空",Toast.LENGTH_SHORT).show(); } return i; } }
期间遇到了一个小问题,就是在数据库自增段进行删除时,比如1,2,3,4把其中的3删除了,变为1,2,4;然后根据listview来查询出现了问题,本来想查询删除后的4号,可是listview上还是3号,于是我增加了一个Arraylist来保存删除后的1,2,4。每进行一次删除操作,就重新把数据库的自增段遍历给Arraylist,通过Arraylist解决了问题。