目標:實現動物類列表的顯示
Step1:分析可知不同的類別具有共同的屬性,可以抽出一個繼承關係,父類是Idiom。
實現:在entity包下建立Idiom類
public class Idiom {
private Integer id;
private String idiom;// 成語
private String spell;// 拼音
private String explain;// 解釋
private String antonym;// 反義詞
private String homoionym;// 同義詞
private String derivation;// 來歷
private String examples;// 舉例
private String english;// 成語的英語解釋
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getIdiom() {
return idiom;
}
public void setIdiom(String idiom) {
this.idiom = idiom;
}
public String getSpell() {
return spell;
}
public void setSpell(String spell) {
this.spell = spell;
}
public String getExplain() {
return explain;
}
public void setExplain(String explain) {
this.explain = explain;
}
public String getAntonym() {
return antonym;
}
public void setAntonym(String antonym) {
this.antonym = antonym;
}
public String getHomoionym() {
return homoionym;
}
public void setHomoionym(String homoionym) {
this.homoionym = homoionym;
}
public String getDerivation() {
return derivation;
}
public void setDerivation(String derivation) {
this.derivation = derivation;
}
public String getExamples() {
return examples;
}
public void setExamples(String examples) {
this.examples = examples;
}
public String getEnglish() {
return english;
}
public void setEnglish(String english) {
this.english = english;
}
public Idiom(String idiom, String spell, String explain,
String antonym, String homoionym, String derivation,
String examples, String english) {
super();
this.idiom = idiom;
this.spell = spell;
this.explain = explain;
this.antonym = antonym;
this.homoionym = homoionym;
this.derivation = derivation;
this.examples = examples;
this.english = english;
}
@Override
public String toString() {
return "Idiom [id=" + id + ", idiom=" + idiom + ", spell=" + spell
+ ", explain=" + explain + ", antonym=" + antonym
+ ", homoionym=" + homoionym + ", derivation=" + derivation
+ ", examples=" + examples + ", english=" + english + "]";
}
}
在entity包下建立Animal類
public class Animal extends Idiom {
public Animal(String idiom, String spell, String explain,
String antonym, String homoionym, String derivation,
String examples, String english) {
super(idiom, spell, explain, antonym, homoionym, derivation, examples,
english);
}
}
Step2:在dao包下建立IdiomDao類和AnimalDao類
public abstract class IdiomDao {
private SQLiteDatabase sqLiteDatabase;
public IdiomDao(Context context){
DBHelper dbHelper=new DBHelper(context);
sqLiteDatabase=dbHelper.openDatabase();
}
public abstract List<Idiom> getIdioms();
public SQLiteDatabase getSqLiteDatabase() {
return sqLiteDatabase;
}
}
public class AnimalDao extends IdiomDao {
public AnimalDao(Context context) {
super(context);
}
@Override
public List<Idiom> getIdioms() {
SQLiteDatabase sqLiteDatabase=getSqLiteDatabase();
List<Idiom> idioms=new ArrayList<Idiom>();
Cursor cursor=sqLiteDatabase.rawQuery("select * from animal", null);
while(cursor.moveToNext()){
String an_idiom = cursor.getString(cursor
.getColumnIndex("an_idiom"));
String an_explain = cursor.getString(cursor
.getColumnIndex("an_explain"));
String an_spell = cursor.getString(cursor
.getColumnIndex("an_spell"));
String an_antonym = cursor.getString(cursor
.getColumnIndex("an_antonym"));
String an_homoionym = cursor.getString(cursor
.getColumnIndex("an_homoionym"));
String an_derivation = cursor.getString(cursor
.getColumnIndex("an_derivation"));
String an_examples = cursor.getString(cursor
.getColumnIndex("an_examples"));
String an_english = cursor.getString(cursor
.getColumnIndex("an_english"));
Idiom idiom = new Animal(an_idiom,an_spell,an_explain,an_antonym,an_homoionym,an_derivation,an_examples,an_english);
idioms.add(idiom);
}
cursor.close();
sqLiteDatabase.close();
return idioms;
}
}
Step3:進行單元測試,確保可以從數據庫中將動物類成語查詢出來
public class IdiomDaoTest extends AndroidTestCase {
public void testCreateDB(){
DBHelper dbHelper=new DBHelper(getContext());
dbHelper.openDatabase();
}
public void testGetIdioms(){
IdiomDao idiomDao=new AnimalDao(getContext());
List<Idiom> idioms=idiomDao.getIdioms();
for(Idiom idiom:idioms){
System.out.println(idiom);
}
}
}
Step4:定義Study_AnimalActivity類及其activity_study_animal.xml文件,每一列表項的佈局study_animal_item.xml
public class Study_AnimalActivity extends ListActivity {
private List<Map<String,Object>> data;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_study__animal);
getData();
SimpleAdapter simpleAdapter=new SimpleAdapter(this,data,R.layout.study_animal_item,new String[]{"idiom"},new int[]{R.id.idiom});
setListAdapter(simpleAdapter);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_study__animal, menu);
return true;
}
private void getData() {
IdiomDao idiomDao=new AnimalDao(this);
List<Idiom> idioms=idiomDao.getIdioms();
data = new ArrayList<Map<String, Object>>();
for (int i = 0; i < idioms.size(); i++) {
Map<String, Object> map = new HashMap<String, Object>();
map.put("idiom", idioms.get(i).getIdiom());
data.add(map);
}
}
}
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent" android:background="@drawable/bg_animal">
<ListView android:id="@id/android:list" android:layout_width="fill_parent"
android:layout_height="fill_parent" android:drawSelectorOnTop="false"
android:cacheColorHint="#00000000"
android:scrollbars="vertical" android:layoutAnimation="@anim/list_animation_layout" />
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<!-- 顯示動物類別,listview中每條要顯示的內容 -->
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:paddingLeft="10dip" android:paddingRight="10dip"
android:paddingTop="1dip" android:paddingBottom="1dip"
>
<TextView
android:id="@+id/idiom"
android:layout_width="250dip"
android:layout_height="wrap_content"
android:textSize="25sp"
android:gravity="left"
android:textColor="#000000"
android:layout_alignParentLeft="true" />
<ImageButton
android:id="@+id/save"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:focusable="false"
android:src="@drawable/save"
android:layout_toRightOf="@+id/idiom"
android:layout_alignParentRight="true" />
</RelativeLayout>