2016-12-1 课程内容
昨天学了Android数据库升级、降级、创建
今天把数据库表里面的数据读取出来显示到手机屏幕上
下面代码是MainActivity.java 的代码
package com.example.winxinmff; import java.sql.SQLException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import android.app.Activity; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ListView; import android.widget.SimpleAdapter; import android.widget.Toast; import com.example.entity.Message; import com.example.winxinmffSQL.R; import com.j256.ormlite.dao.Dao; public class MainActivity extends Activity { private SimpleAdapter sa; // 是android中一个列表适配器 主要用于做一些简单的列表适配 private ListView lv; private List<Message> messageList = new ArrayList<Message>(); private List<Map<String, Object>> messageList2 = new ArrayList<Map<String, Object>>(); private List<Message> messageList3;// 用于ORMLite 的演示 // 看名字就是databasehelper,数据库助手的意思,这本身就是一个类。 // 包含了数据库连接,关闭,如果有拓展的话 可能包含基本的数据库JDBC操作方法也就是简化增删改查的一些方法。 private DatabaseHelper db_helper; // 首次创建时,会调用这个方法。 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.weixin); // 此3行代码用于创建表结构,以及初始化数据 MyDatabaseOpenHelper helper = new MyDatabaseOpenHelper( MainActivity1.this); SQLiteDatabase db = helper.getWritableDatabase(); db.close(); lv = (ListView) findViewById(R.id.listView1); sa = new SimpleAdapter(this, messageList2,// data 不仅仅是数据,而是一个与界面耦合的数据混合体 R.layout.listview_item_layout, new String[] { "tou", "userName", "lastMessage", "datetime" },// from 从来来 new int[] { R.id.imageView1, R.id.tv_userName, R.id.tv_lasMessage, R.id.tv_datetime }// to 到那里去 ); lv.setAdapter(sa); lv.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Map<String, Object> item = messageList2.get(position); item.put("userName", "赵本山" + position); sa.notifyDataSetChanged(); } }); } // UI呈现在眼前 protected void onResume() { Log.i("ok", "onResume,界面出现了"); // 使用ORMLite db_helper = new DatabaseHelper(this); Dao<Message, Integer> message_dao = db_helper.getMessageDao(); try { messageList3 = message_dao.queryForAll(); // Log.i("ormlite", "记录条数:"+messageList3.size()); String t = "记录条数:" + messageList3.size(); Toast.makeText(this, t, Toast.LENGTH_LONG).show(); } catch (SQLException e) { String t = "记出错:" + e.getMessage(); Toast.makeText(this, t, Toast.LENGTH_LONG).show(); } // 模拟读取数据库或者互联网 for (int i = 0; i < messageList3.size(); i++) { Message p = new Message(); p.setTou1("xxx"); p.setUserName("不对外开放 高内聚 "); p.setLastMessage("匿名内部类也就是没有名字的内部类匿名内部类也就是没有名字的内部类"); p.setDatetime("11.11"); messageList.add(p);// 上周 // 定义一个界面与数据的混合体,一个item代表一行记录 Map<String, Object> item = new HashMap<String, Object>(); // 一行记录,包含多个控件 item.put("tou", R.drawable.a); // 头像 item.put("userName", messageList3.get(i).getUserName() + i); // 名字 item.put("lastMessage", messageList3.get(i).getLastMessage()); // 内容 item.put("datetime", messageList3.get(i).getDatetime()); // 时间 messageList2.add(item); // 添加到集合 } super.onResume(); } // UI完全消失在眼前,完全被另外一个进程覆盖 protected void onPause() { Log.i("ok", "onPause,被抛弃"); db_helper.close();// ??到底要不要? super.onPause(); } }