代码很垃圾,禁止转载。
很简单的功能,将SQLite中存储的账户信息(包括账号,软件)显示到List View中,垃圾代码如下。
AccountInfo.java
关于账户信息的对象,构造方法有三个参数,这里我们只显示Number和Software。
package object; public class AccountInfo { private String number; private String password; private String softname; public String getnumber() { return number; } public String getpassword() { return password; } public String getsoftname(){ return softname; } public AccountInfo(String number,String password,String softname) { this.number = number; this.password=password; this.softname=softname; } @Override public String toString() { return "account [NUMBER=" + number + ", PASSWORD=" + password + ", softname ="+ softname + "]"; } }
AccountInfoAdapter.java
关于Adapter的介绍,可以参考https://blog.csdn.net/u012485942/article/details/21278491,博主讲的很详细。
package object; import java.util.List; import java.util.Map; import com.example.swissarmy.R; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.TextView; public class AccountInfoAdapter extends BaseAdapter { private List<Map<String, String>> data; private LayoutInflater layoutInflater; private Context context; private String[] keyString; private int[] valueViewID; public AccountInfoAdapter(Context context,//上下文 List<Map<String, String>> data,//绑定数据 int listview, String[] from, int[] to) { this.data = data; this.context = context; this.layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); this.keyString = new String[from.length]; this.valueViewID = new int[to.length]; } public final class Zujian{ public TextView parm6; public TextView parm7; } @Override public int getCount() { return data.size(); } /** * 获得某一位置的数据 */ @Override public Object getItem(int position) { return data.get(position); } /** * 获得唯一标识 */ @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { Zujian zujian=null; if(convertView==null){ zujian=new Zujian(); //获得组件,实例化组件 convertView=layoutInflater.inflate(R.layout.listview_accountinfo, null); zujian.parm6=(TextView)convertView.findViewById(R.id.parm6); zujian.parm7=(TextView)convertView.findViewById(R.id.parm7); convertView.setTag(zujian); }else{ zujian=(Zujian)convertView.getTag(); } //绑定数据 zujian.parm6.setText((String)data.get(position).get("parm6")); zujian.parm7.setText((String)data.get(position).get("parm7")); return convertView; } }
ViewAccountActivity.java
SQLite获取到数据,显示到ListView中。具体看注释。
package saftybox.view; import com.example.swissarmy.R; import android.os.Bundle; import android.app.Activity; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; import android.view.Menu; import android.view.View; import android.view.Window; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.AdapterView; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; import android.widget.AdapterView.OnItemClickListener; import android.widget.ListView; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import object.AccountInfo; import object.AccountInfoAdapter; import saftybox.operate.Encryption; import database.operate.AccountInformationDatabase; public class ViewAccountActivity extends Activity { //解密SQLite中的密文 byte[] key={0x01,0x23,0x45,0x67,(byte) 0x89,(byte) 0xab,(byte) 0xcd,(byte) 0xef,(byte) 0xfe,(byte) 0xdc,(byte) 0xba,(byte) 0x98,0x76,0x54,0x32,0x10}; private SharedPreferences sp; static String number; static String softname; static String packagename; public static String PASSWORD; ListView listView; Button btn; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.saftybox_viewaccount); btn = (Button) findViewById(R.id.view_account_button); listView= (ListView)findViewById(R.id.view_account_listview); TextView tvTitle =(TextView) findViewById(R.id.Titletext); tvTitle.setText("选择账号"); ImageView back = (ImageView) findViewById(R.id.Titlehome); back.setOnClickListener(new ImageView.OnClickListener() {// 创建监听 public void onClick(View v) { finish(); } }); // 生成适配器的Item和动态数组对应的元素 final AccountInfoAdapter listItemAdapter = new AccountInfoAdapter(this, getData(), R.layout.listview_accountinfo, new String[] { "parm6", "parm7"}, new int[] {R.id.parm6, R.id.parm7}); listView.setAdapter(listItemAdapter); listView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapter, View view, int position, long id) { ListView listView = (ListView)adapter; HashMap<String, String> map = (HashMap<String, String>) listView.getItemAtPosition(position); softname = map.get("parm6"); number = map.get("parm7"); //从数据库中提取出所有的账户信息 AccountInformationDatabase account = new AccountInformationDatabase(ViewAccountActivity.this); account.open("ahjdabjk"); String numberCipher = Encryption.deal(number,1,key); if(account.find(numberCipher, softname) != null) { PASSWORD = Encryption.deal (account.find(numberCipher, softname).getpassword().toString(),0,key); } account.close(); Toast.makeText(getApplicationContext(), softname + " " + number,Toast.LENGTH_SHORT).show(); } }); btn.setOnClickListener(listener); } @Override protected void onStart() { super.onStart(); } @Override protected void onStop() { super.onStop(); } public List<Map<String, String>> getData(){ AccountInformationDatabase account =new AccountInformationDatabase(ViewAccountActivity.this); account.open("ahjdabjk"); List<AccountInfo> AllInfo = account.getScrollData(); List<Map<String, String>> list=new ArrayList<Map<String,String>>(); for (int i = 0; i < AllInfo.size(); i++) { Map<String, String> map=new HashMap<String, String>(); map.put("parm6", AllInfo.get(i).getsoftname()); map.put("parm7", Encryption.deal(AllInfo.get(i).getnumber(),0,key)); list.add(map); } account.close(); return list; } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } }
理解的还不够深入,如有问题,欢迎各位大佬指出。