接着上文《》,往person数据表中插入50条数据
public void testAdd() throws Exception { PersonDao dao = new PersonDao(getContext()); // .add("wangwu", "123", 50000); // dao.add("zhangsan", "234", 17000); int number = 857600001; Random random = new Random(); for (int i = 0; i < 50; i++) { dao.add("wuyudong" + i, Long.toString(number + i), random.nextInt(5000)); } }
常规方法显示数据
首先不使用ListViewview,而是直接使用程序来呈现数据表中的数据,代码如下:
package com.wuyudong.db;import java.util.List;import com.wuyudong.db.dao.PersonDao;import com.wuyudong.db.domain.Person;import android.os.Bundle;import android.text.style.LeadingMarginSpan;import android.widget.LinearLayout;import android.widget.TextView;import android.app.Activity;import android.graphics.Color;public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); LinearLayout ll_root = (LinearLayout)findViewById(R.id.ll_root); PersonDao dao = new PersonDao(this); Listpersons = dao.findAll(); for (Person person : persons) { String info = person.toString(); TextView tv = new TextView(this); tv.setTextSize(20); tv.setTextColor(Color.BLACK); tv.setText(info); ll_root.addView(tv); } }}
activity_main.xml中的代码如下:
运行结果如下图:
使用ListView显示数据
数据显示(listview)
需求: 把数据库的内容全部显示在界面上
符合MVC模型
m: model 数据模型 -- Person
v: view 视图 -- ListView
c: controller 控制器 --Adapter 数据适配器
下面使用ListViewview来实现这个功能
修改activity_main.xml中的代码如下
界面如下:
代码如下:
package com.wuyudong.db;import java.util.List;import com.wuyudong.db.dao.PersonDao;import com.wuyudong.db.domain.Person;import android.os.Bundle;import android.text.style.LeadingMarginSpan;import android.util.Log;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.LinearLayout;import android.widget.ListView;import android.widget.TextView;import android.app.Activity;import android.graphics.Color;public class MainActivity extends Activity { private ListView lv; private Listpersons; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); PersonDao dao = new PersonDao(this); persons = dao.findAll(); lv = (ListView) findViewById(R.id.lv); lv.setAdapter(new MyAdapter()); } // 默认实现类形如: simplexxx, basexxx, defaultxxx private class MyAdapter extends BaseAdapter { private static final String TAG = "MyAdapter"; /** * 控制ListView里面总共有多少条目 */ @Override public int getCount() { return persons.size(); // 条目个数==集合的size } @Override public Object getItem(int position) { // TODO Auto-generated method stub return null; } @Override public long getItemId(int position) { // TODO Auto-generated method stub return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { Log.i(TAG, "返回view对象,位置: " + position); TextView tv = new TextView(getApplicationContext()); tv.setTextSize(20); tv.setTextColor(Color.BLACK); // 得到某个位置对应的person对象 Person person = persons.get(position); tv.setText(person.toString()); return tv; } }}
运行结果如下:
使用logcat过滤器查看:
只显示5个位置,说明手机屏幕只能显示这么多,如果滑动手机屏幕的话,位置数量会越来越多