HappyIdiom之六(1)實現動物類列表的顯示

目標:實現動物類列表的顯示

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>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章