Android List View显示SQLite存储的数据

代码很垃圾,禁止转载。

很简单的功能,将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;
	}
}

理解的还不够深入,如有问题,欢迎各位大佬指出。


猜你喜欢

转载自blog.csdn.net/cugzhaolc/article/details/80447018