接著上文《Android 資料庫的事務》,往person數據表中插入50條數據 常規方法顯示數據 首先不使用ListViewview,而是直接使用程式來呈現數據表中的數據,代碼如下: activity_main.xml中的代碼如下: 運行結果如下圖: 使用ListView顯示數據 數據顯示(list ...
接著上文《Android 資料庫的事務》,往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); List<Person> persons = 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中的代碼如下:
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <LinearLayout android:id="@+id/ll_root" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity" > </LinearLayout> </ScrollView>
運行結果如下圖:
使用ListView顯示數據
數據顯示(listview)
需求: 把資料庫的內容全部顯示在界面上
符合MVC模型
m: model 數據模型 -- Person
v: view 視圖 -- ListView
c: controller 控制器 --Adapter 數據適配器
下麵使用ListViewview來實現這個功能
修改activity_main.xml中的代碼如下
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/ll_root" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity" > <ListView android:id="@+id/lv" android:layout_width="match_parent" android:layout_height="match_parent" > </ListView> </LinearLayout>
界面如下:
代碼如下:
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 List<Person> persons; @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個位置,說明手機屏幕只能顯示這麼多,如果滑動手機屏幕的話,位置數量會越來越多