19乐学成语



test包下新建DBOpenHelperTest.java页面测试一下数据库是否处理成功。
DBOpenHelperTest.java页面:
[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. package cn.edu.bztc.happyidiom.test;  
  2.   
  3. import cn.edu.bztc.happyidiom.db.DBOpenHelper;  
  4. import android.test.AndroidTestCase;  
  5.   
  6. public class DBOpenHelperTest extends AndroidTestCase{  
  7.     public void testDBCopy(){  
  8.         DBOpenHelper dbOpenHelper=new DBOpenHelper(getContext());  
  9.         dbOpenHelper.openDatabase();  
  10.     }  
  11. }  


单元测试需要在AndroidManifest.xml页面进行配置。
</application>上方添加:
[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. <uses-library android:name="android.test.runner"/>  
</manifest>上方添加:
[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. <instrumentation android:name="android.test.InstrumentationTestRunner"  
  2.         android:targetPackage="cn.edu.bztc.happyidion.activity"></instrumentation>  


测试成功继续编写页面。dao包下新建AnimalDao.java类,获取数据库中数据。
AnimalDao.java页面:
[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. package cn.edu.bztc.happyidiom.dao;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.List;  
  5.   
  6. import cn.edu.bztc.happyidiom.db.DBOpenHelper;  
  7. import cn.edu.bztc.happyidiom.entity.Animal;  
  8. import android.content.Context;  
  9. import android.database.Cursor;  
  10. import android.database.sqlite.SQLiteDatabase;  
  11.   
  12. public class AnimalDao {  
  13.     private static AnimalDao animaiDao;  
  14.     private SQLiteDatabase db;  
  15.     /*将构造方法私有化*/  
  16.     private AnimalDao(Context context){  
  17.         DBOpenHelper dbHelper=new DBOpenHelper(context);  
  18.         db=dbHelper.openDatabase();  
  19.     }  
  20.     /*获取AnimalDao的实例*/  
  21.     public synchronized static AnimalDao getInstance(Context context){  
  22.         if(animaiDao==null){  
  23.             animaiDao=new AnimalDao(context);  
  24.         }  
  25.         return animaiDao;  
  26.     }  
  27.     /*从数据库读取所有的动物类成语*/  
  28.     public List<Animal> getAllAnimals(){  
  29.         List<Animal> list=new ArrayList<Animal>();  
  30.         Cursor cursor=db.query("animal",null,null,null,null,null,null);  
  31.         if(cursor.moveToNext()){  
  32.             do{  
  33.                 Animal animal=new Animal();  
  34.                 animal.setId(cursor.getInt(cursor.getColumnIndex("_id")));  
  35.                 animal.setName(cursor.getString(cursor.getColumnIndex("name")));  
  36.                 animal.setPronounce(cursor.getString(cursor.getColumnIndex("pronounce")));  
  37.                 animal.setAntonym(cursor.getString(cursor.getColumnIndex("antonym")));  
  38.                 animal.setHomoionym(cursor.getString(cursor.getColumnIndex("homoionym")));  
  39.                 animal.setDerivation(cursor.getString(cursor.getColumnIndex("derivation")));  
  40.                 animal.setExamples(cursor.getString(cursor.getColumnIndex("examples")));  
  41.                 animal.setExplain(cursor.getString(cursor.getColumnIndex("explain")));  
  42.                 list.add(animal);  
  43.             }while(cursor.moveToNext());  
  44.         }  
  45.         return list;  
  46.     }  
  47. }  


再次在test包下新建AnimalDaoTest.java测试类,测试是否能够读取数据。
AnimalDaoTest.java页面:
[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. package cn.edu.bztc.happyidiom.test;  
  2.   
  3. import java.util.List;  
  4.   
  5. import cn.edu.bztc.happyidiom.dao.AnimalDao;  
  6. import cn.edu.bztc.happyidiom.entity.Animal;  
  7. import android.test.AndroidTestCase;  
  8.   
  9. public class AnimalDaoTest extends AndroidTestCase{  
  10.     public void testGetAllAnimals(){  
  11.         AnimalDao animalDao=AnimalDao.getInstance(getContext());  
  12.         List<Animal> animals=animalDao.getAllAnimals();  
  13.         System.out.println(animals.size());  
  14.         for(Animal animal:animals){  
  15.             System.out.println(animal.getName());  
  16.         }  
  17.     }  
  18. }  


adapter包下新建CategoryAdapter.java页面,处理学习页面的ListView和学习类别数据源。
CategoryAdapter.java页面:
[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. package cn.edu.bztc.happyidiom.adapter;  
  2.   
  3. import java.util.List;  
  4.   
  5. import cn.edu.bztc.happyidiom.entity.Category;  
  6. import cn.edu.bztc.happyidion.activity.R;  
  7. import android.content.Context;  
  8. import android.view.LayoutInflater;  
  9. import android.view.View;  
  10. import android.webkit.WebView.FindListener;  
  11. import android.widget.ArrayAdapter;  
  12. import android.widget.ImageView;  
  13. import android.widget.TextView;  
  14.   
  15. public class CategoryAdapter extends ArrayAdapter<Category>{  
  16.   
  17.     private int resourceId;  
  18.     public CategoryAdapter(Context context, int resource,  
  19.             List<Category> categoryList) {  
  20.         super(context,resource, categoryList);  
  21.         resourceId=resource;  
  22.     }  
  23.     public View getView(int position, android.view.View convertView, android.view.ViewGroup parent) {  
  24.         Category category=getItem(position);//获取当前项的Category实例  
  25.         View view;  
  26.         ViewHolder viewHolder;  
  27.         if(convertView==null){  
  28.             view=LayoutInflater.from(getContext()).inflate(resourceId,null);  
  29.             viewHolder=new ViewHolder();  
  30.             viewHolder.categoryImage=(ImageView)view.findViewById(R.id.category_image);  
  31.             viewHolder.categoryName=(TextView)view.findViewById(R.id.category_name);  
  32.             view.setTag(viewHolder);      
  33.         }else{  
  34.             view=convertView;  
  35.             viewHolder=(ViewHolder) view.getTag();  
  36.         }  
  37.         viewHolder.categoryImage.setImageResource(category.getImageId());  
  38.         viewHolder.categoryName.setText(category.getName());  
  39.         return view;  
  40.     }  
  41.     class ViewHolder{  
  42.         ImageView categoryImage;  
  43.         TextView categoryName;  
  44.     }  
  45. }  

adapter包下新建AnimalAdapter.java页面,处理动物类别页面的ListView和具体成语数据源。
AnimalAdapter.java页面:
[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. package cn.edu.bztc.happyidiom.adapter;  
  2.   
  3. import java.util.List;  
  4.   
  5. import cn.edu.bztc.happyidiom.entity.Animal;  
  6. import cn.edu.bztc.happyidion.activity.R;  
  7. import android.content.Context;  
  8. import android.view.LayoutInflater;  
  9. import android.view.View;  
  10. import android.view.View.OnClickListener;  
  11. import android.view.ViewGroup;  
  12. import android.webkit.WebView.FindListener;  
  13. import android.widget.ArrayAdapter;  
  14. import android.widget.ImageButton;  
  15. import android.widget.TextView;  
  16. import android.widget.Toast;  
  17.   
  18. public class AnimalAdapter extends ArrayAdapter<Animal>{  
  19.   
  20.     private int resourceId;  
  21.     private Context context;  
  22.     public AnimalAdapter(Context context, int resource,List<Animal> objects) {  
  23.         super(context,resource, objects);  
  24.         this.context=context;  
  25.         resourceId=resource;  
  26.     }  
  27.     @Override  
  28.     public View getView(int position, View convertView, ViewGroup parent) {  
  29.         final Animal animal =getItem(position);//获取当前项的Animal实例  
  30.         View view;  
  31.         ViewHolder viewHolder;  
  32.         if(convertView==null){//判断是否第一次运行,如果是则进入,并将上下文环境保存进convertView  
  33.             view=LayoutInflater.from(getContext()).inflate(resourceId,null);  
  34.             viewHolder=new ViewHolder();  
  35.             viewHolder.tvName=(TextView)view.findViewById(R.id.tvName);  
  36.             viewHolder.btnSave=(ImageButton)view.findViewById(R.id.btnSave);  
  37.             viewHolder.btnSave.setOnClickListener(new OnClickListener() {  
  38.                 @Override  
  39.                 public void onClick(View arg0) {  
  40.                     Toast.makeText(context,"你要收藏"+animal.getName()+"吗",Toast.LENGTH_SHORT).show();  
  41.                 }  
  42.             });  
  43.             view.setTag(viewHolder);  
  44.         }else{//如果不是第一次运行,convertView不为空,直接取出赋值给view  
  45.             view=convertView;  
  46.             viewHolder=(ViewHolder) view.getTag();  
  47.         }  
  48.         viewHolder.tvName.setText(animal.getName());//显示成语  
  49.         return view;  
  50.     }  
  51.     class ViewHolder{  
  52.         TextView tvName;  
  53.         ImageButton btnSave;  
  54.     }  
  55. }  

在util包下新建DialogUtil.java.java页面,作为弹出对话框的处理页面。
DialogUtil.jav页面:
[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. package cn.edu.bztc.happyidiom.util;  
  2.   
  3. import cn.edu.bztc.happyidion.activity.R;  
  4. import android.app.AlertDialog;  
  5. import android.app.AlertDialog.Builder;  
  6. import android.content.Context;  
  7. import android.content.DialogInterface;  
  8. import android.view.LayoutInflater;  
  9. import android.view.View;  
  10. import android.widget.TextView;  
  11.   
  12. public class DialogUtil {  
  13.     public static void showDialog(String result,Context context){  
  14.         AlertDialog.Builder builder=new AlertDialog.Builder(context);  
  15.         LayoutInflater layoutInflater=LayoutInflater.from(context);  
  16.         View view=layoutInflater.inflate(R.layout.dialog_info,null);  
  17.         builder.setView(view);  
  18.         TextView tvdiomInfo=(TextView)view.findViewById(R.id.tvIdiomInfo);  
  19.         tvdiomInfo.setText(result);//设置之前定义的提示语句  
  20.         builder.setPositiveButton("确定",new DialogInterface.OnClickListener() {  
  21.             @Override  
  22.             public void onClick(DialogInterface dialog, int which) {  
  23.                 dialog.dismiss();//对话框关闭  
  24.             }  
  25.         });  
  26.         builder.create().show();//打开对话框  
  27.     }  
  28. }  


MainActivity.java页面用于配置TabHost控件子页面。
MainActivity.java页面:
[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. package cn.edu.bztc.happyidion.activity;  
  2.   
  3. import android.app.TabActivity;  
  4. import android.content.Intent;  
  5. import android.os.Bundle;  
  6. import android.view.Menu;  
  7. import android.view.Window;  
  8. import android.widget.TabHost;  
  9.   
  10. public class MainActivity extends TabActivity{  
  11.   
  12.     private TabHost tabHost;//导航栏控件  
  13.     @Override  
  14.     protected void onCreate(Bundle savedInstanceState) {  
  15.         super.onCreate(savedInstanceState);  
  16.         requestWindowFeature(Window.FEATURE_NO_TITLE);//取消标题栏  
  17.         setContentView(R.layout.activity_main);  
  18.         tabHost=getTabHost();     //获取TabHost实例  
  19.         /*一个Tab对应一个name名称,一个标题,一个图标,yigeActivity页面*/  
  20.         addTab("study",R.string.title_study,R.drawable.study,StudyActivity.class);  
  21.         addTab("search",R.string.title_search,R.drawable.search,StudyActivity.class);  
  22.         addTab("game",R.string.title_game,R.drawable.game,StudyActivity.class);  
  23.         addTab("save",R.string.title_save,R.drawable.save,StudyActivity.class);  
  24.         addTab("help",R.string.title_help,R.drawable.help,StudyActivity.class);  
  25.     }  
  26.     /*定义每个Tab的显示内容*/  
  27.     private void addTab(String tag,int title_introduction,int title_icon,Class ActivityClass){  
  28.         tabHost.addTab(tabHost.newTabSpec(tag).setIndicator(getString(title_introduction),getResources().getDrawable(title_icon)).setContent(new Intent(this,ActivityClass)));  
  29.     }  
  30.     @Override  
  31.     public boolean onCreateOptionsMenu(Menu menu) {  
  32.         getMenuInflater().inflate(R.menu.main, menu);  
  33.         return true;  
  34.     }  
  35. }  

StudyActivity.java页面作为学习页面显示成语类别。
StudyActivity.java页面:
[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. package cn.edu.bztc.happyidion.activity;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.List;  
  5.   
  6.   
  7. import cn.edu.bztc.happyidiom.adapter.CategoryAdapter;  
  8. import cn.edu.bztc.happyidiom.entity.Category;  
  9.   
  10. import android.app.Activity;  
  11. import android.content.Intent;  
  12. import android.content.res.Resources;  
  13. import android.os.Bundle;  
  14. import android.util.Log;  
  15. import android.view.Menu;  
  16. import android.view.View;  
  17. import android.widget.AdapterView;  
  18. import android.widget.AdapterView.OnItemClickListener;  
  19. import android.widget.ListView;  
  20. import android.widget.Toast;  
  21.   
  22. public class StudyActivity extends Activity {  
  23.     private List<Category> categoryList;  
  24.     private String[] category_names;  
  25.     private int[] category_images;  
  26.   
  27.     @Override  
  28.     protected void onCreate(Bundle savedInstanceState) {  
  29.         super.onCreate(savedInstanceState);  
  30.         setContentView(R.layout.activity_study);  
  31.         initCategories();  
  32.         CategoryAdapter adapter=new CategoryAdapter(this,R.layout.category_item,categoryList);  
  33.         ListView listView=(ListView) findViewById(R.id.lvCategories);  
  34.         listView.setAdapter(adapter);//绑定适配器  
  35.         listView.setOnItemClickListener(new OnItemClickListener() {  
  36.             @Override  
  37.             public void onItemClick(AdapterView<?> adapter, View view, int position,  
  38.                     long id) {  
  39.                 switch (position) {//position为0代表动物类  
  40.                 case 0:  
  41.                     Intent intent=new Intent(StudyActivity.this,StudyAnimalActivity.class);  
  42.                     startActivity(intent);  
  43.                     break;  
  44.                 default:  
  45.                     break;  
  46.                 }  
  47.             }  
  48.         });  
  49.     }  
  50.   
  51.     private void initCategories() {  
  52.         categoryList = new ArrayList<Category>();  
  53.         Resources resources = getResources();  
  54.         /*获取数据源*/  
  55.         category_names = resources.getStringArray(R.array.category);  
  56.         category_images = new int[] { R.drawable.category_animal,  
  57.                 R.drawable.category_nature, R.drawable.category_human,  
  58.                 R.drawable.category_season, R.drawable.category_number,  
  59.                 R.drawable.category_fable, R.drawable.category_other };  
  60.         for(int i=0;i<category_names.length;i++){  
  61.             categoryList.add(new Category(category_names[i],category_images[i]));  
  62.         }  
  63.     }  
  64.     @Override  
  65.     public boolean onCreateOptionsMenu(Menu menu) {  
  66.         getMenuInflater().inflate(R.menu.main,menu);  
  67.         return true;  
  68.     }  
  69. }  


StudyAnimalActivity.java页面用于显示动物类别中具体的成语信息,以及每一项的点击事件。
StudynimalActivity.java页面:
[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. package cn.edu.bztc.happyidion.activity;  
  2.   
  3. import java.util.List;  
  4.   
  5. import cn.edu.bztc.happyidiom.adapter.AnimalAdapter;  
  6. import cn.edu.bztc.happyidiom.dao.AnimalDao;  
  7. import cn.edu.bztc.happyidiom.entity.Animal;  
  8. import cn.edu.bztc.happyidiom.util.DialogUtil;  
  9.   
  10. import android.app.Activity;  
  11. import android.os.Bundle;  
  12. import android.util.Log;  
  13. import android.view.View;  
  14. import android.widget.AdapterView;  
  15. import android.widget.AdapterView.OnItemClickListener;  
  16. import android.widget.ListView;  
  17. import android.widget.Toast;  
  18.   
  19. public class StudyAnimalActivity extends Activity{  
  20.     private List<Animal> animalList;  
  21.     private AnimalDao animalDao;  
  22.     private ListView lvAnimalList;  
  23.     @Override  
  24.     protected void onCreate(Bundle savedInstanceState) {  
  25.         super.onCreate(savedInstanceState);  
  26.         setContentView(R.layout.activity_animal);  
  27.         initAnimals();  
  28.         lvAnimalList=(ListView)findViewById(R.id.lvAnimalList);  
  29.         AnimalAdapter animalAdapter=new AnimalAdapter(this,R.layout.animal_item,animalList);  
  30.         lvAnimalList.setAdapter(animalAdapter);  
  31.         lvAnimalList.setOnItemClickListener(new OnItemClickListener() {  
  32.             @Override  
  33.             public void onItemClick(AdapterView<?> adapterView, View view, int position,  
  34.                     long id) {  
  35.                 Animal animal=animalList.get(position);  
  36.                 /*定义对话框中提示语句*/  
  37.                 String result=animal.getName()+"\n"+  
  38.                 animal.getPronounce()+  
  39.                 "\n【解释】:"+animal.getExplain()+  
  40.                 "\n【近义词】:"+animal.getHomoionym()+  
  41.                 "\n【反义词】:"+animal.getAntonym()+  
  42.                 "\n【来源】:"+animal.getDerivation()+  
  43.                 "\n【示例】:"+animal.getExamples();  
  44.                 DialogUtil.showDialog(result,StudyAnimalActivity.this);  
  45.             }  
  46.         });  
  47.     }  
  48.     /*获取成语数据*/  
  49.     private void initAnimals() {  
  50.         animalDao=AnimalDao.getInstance(this);  
  51.         animalList=animalDao.getAllAnimals();  
  52.     }  
  53. }  
15.test包下新建DBOpenHelperTest.java页面测试一下数据库是否处理成功。
DBOpenHelperTest.java页面:
[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. package cn.edu.bztc.happyidiom.test;  
  2.   
  3. import cn.edu.bztc.happyidiom.db.DBOpenHelper;  
  4. import android.test.AndroidTestCase;  
  5.   
  6. public class DBOpenHelperTest extends AndroidTestCase{  
  7.     public void testDBCopy(){  
  8.         DBOpenHelper dbOpenHelper=new DBOpenHelper(getContext());  
  9.         dbOpenHelper.openDatabase();  
  10.     }  
  11. }  


16.单元测试需要在AndroidManifest.xml页面进行配置。
</application>上方添加:
[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. <uses-library android:name="android.test.runner"/>  
</manifest>上方添加:
[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. <instrumentation android:name="android.test.InstrumentationTestRunner"  
  2.         android:targetPackage="cn.edu.bztc.happyidion.activity"></instrumentation>  


17.测试成功继续编写页面。dao包下新建AnimalDao.java类,获取数据库中数据。
AnimalDao.java页面:
[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. package cn.edu.bztc.happyidiom.dao;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.List;  
  5.   
  6. import cn.edu.bztc.happyidiom.db.DBOpenHelper;  
  7. import cn.edu.bztc.happyidiom.entity.Animal;  
  8. import android.content.Context;  
  9. import android.database.Cursor;  
  10. import android.database.sqlite.SQLiteDatabase;  
  11.   
  12. public class AnimalDao {  
  13.     private static AnimalDao animaiDao;  
  14.     private SQLiteDatabase db;  
  15.     /*将构造方法私有化*/  
  16.     private AnimalDao(Context context){  
  17.         DBOpenHelper dbHelper=new DBOpenHelper(context);  
  18.         db=dbHelper.openDatabase();  
  19.     }  
  20.     /*获取AnimalDao的实例*/  
  21.     public synchronized static AnimalDao getInstance(Context context){  
  22.         if(animaiDao==null){  
  23.             animaiDao=new AnimalDao(context);  
  24.         }  
  25.         return animaiDao;  
  26.     }  
  27.     /*从数据库读取所有的动物类成语*/  
  28.     public List<Animal> getAllAnimals(){  
  29.         List<Animal> list=new ArrayList<Animal>();  
  30.         Cursor cursor=db.query("animal",null,null,null,null,null,null);  
  31.         if(cursor.moveToNext()){  
  32.             do{  
  33.                 Animal animal=new Animal();  
  34.                 animal.setId(cursor.getInt(cursor.getColumnIndex("_id")));  
  35.                 animal.setName(cursor.getString(cursor.getColumnIndex("name")));  
  36.                 animal.setPronounce(cursor.getString(cursor.getColumnIndex("pronounce")));  
  37.                 animal.setAntonym(cursor.getString(cursor.getColumnIndex("antonym")));  
  38.                 animal.setHomoionym(cursor.getString(cursor.getColumnIndex("homoionym")));  
  39.                 animal.setDerivation(cursor.getString(cursor.getColumnIndex("derivation")));  
  40.                 animal.setExamples(cursor.getString(cursor.getColumnIndex("examples")));  
  41.                 animal.setExplain(cursor.getString(cursor.getColumnIndex("explain")));  
  42.                 list.add(animal);  
  43.             }while(cursor.moveToNext());  
  44.         }  
  45.         return list;  
  46.     }  
  47. }  


18.再次在test包下新建AnimalDaoTest.java测试类,测试是否能够读取数据。
AnimalDaoTest.java页面:
[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. package cn.edu.bztc.happyidiom.test;  
  2.   
  3. import java.util.List;  
  4.   
  5. import cn.edu.bztc.happyidiom.dao.AnimalDao;  
  6. import cn.edu.bztc.happyidiom.entity.Animal;  
  7. import android.test.AndroidTestCase;  
  8.   
  9. public class AnimalDaoTest extends AndroidTestCase{  
  10.     public void testGetAllAnimals(){  
  11.         AnimalDao animalDao=AnimalDao.getInstance(getContext());  
  12.         List<Animal> animals=animalDao.getAllAnimals();  
  13.         System.out.println(animals.size());  
  14.         for(Animal animal:animals){  
  15.             System.out.println(animal.getName());  
  16.         }  
  17.     }  
  18. }  


19.adapter包下新建CategoryAdapter.java页面,处理学习页面的ListView和学习类别数据源。
CategoryAdapter.java页面:
[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. package cn.edu.bztc.happyidiom.adapter;  
  2.   
  3. import java.util.List;  
  4.   
  5. import cn.edu.bztc.happyidiom.entity.Category;  
  6. import cn.edu.bztc.happyidion.activity.R;  
  7. import android.content.Context;  
  8. import android.view.LayoutInflater;  
  9. import android.view.View;  
  10. import android.webkit.WebView.FindListener;  
  11. import android.widget.ArrayAdapter;  
  12. import android.widget.ImageView;  
  13. import android.widget.TextView;  
  14.   
  15. public class CategoryAdapter extends ArrayAdapter<Category>{  
  16.   
  17.     private int resourceId;  
  18.     public CategoryAdapter(Context context, int resource,  
  19.             List<Category> categoryList) {  
  20.         super(context,resource, categoryList);  
  21.         resourceId=resource;  
  22.     }  
  23.     public View getView(int position, android.view.View convertView, android.view.ViewGroup parent) {  
  24.         Category category=getItem(position);//获取当前项的Category实例  
  25.         View view;  
  26.         ViewHolder viewHolder;  
  27.         if(convertView==null){  
  28.             view=LayoutInflater.from(getContext()).inflate(resourceId,null);  
  29.             viewHolder=new ViewHolder();  
  30.             viewHolder.categoryImage=(ImageView)view.findViewById(R.id.category_image);  
  31.             viewHolder.categoryName=(TextView)view.findViewById(R.id.category_name);  
  32.             view.setTag(viewHolder);      
  33.         }else{  
  34.             view=convertView;  
  35.             viewHolder=(ViewHolder) view.getTag();  
  36.         }  
  37.         viewHolder.categoryImage.setImageResource(category.getImageId());  
  38.         viewHolder.categoryName.setText(category.getName());  
  39.         return view;  
  40.     }  
  41.     class ViewHolder{  
  42.         ImageView categoryImage;  
  43.         TextView categoryName;  
  44.     }  
  45. }  


20.adapter包下新建AnimalAdapter.java页面,处理动物类别页面的ListView和具体成语数据源。
AnimalAdapter.java页面:
[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. package cn.edu.bztc.happyidiom.adapter;  
  2.   
  3. import java.util.List;  
  4.   
  5. import cn.edu.bztc.happyidiom.entity.Animal;  
  6. import cn.edu.bztc.happyidion.activity.R;  
  7. import android.content.Context;  
  8. import android.view.LayoutInflater;  
  9. import android.view.View;  
  10. import android.view.View.OnClickListener;  
  11. import android.view.ViewGroup;  
  12. import android.webkit.WebView.FindListener;  
  13. import android.widget.ArrayAdapter;  
  14. import android.widget.ImageButton;  
  15. import android.widget.TextView;  
  16. import android.widget.Toast;  
  17.   
  18. public class AnimalAdapter extends ArrayAdapter<Animal>{  
  19.   
  20.     private int resourceId;  
  21.     private Context context;  
  22.     public AnimalAdapter(Context context, int resource,List<Animal> objects) {  
  23.         super(context,resource, objects);  
  24.         this.context=context;  
  25.         resourceId=resource;  
  26.     }  
  27.     @Override  
  28.     public View getView(int position, View convertView, ViewGroup parent) {  
  29.         final Animal animal =getItem(position);//获取当前项的Animal实例  
  30.         View view;  
  31.         ViewHolder viewHolder;  
  32.         if(convertView==null){//判断是否第一次运行,如果是则进入,并将上下文环境保存进convertView  
  33.             view=LayoutInflater.from(getContext()).inflate(resourceId,null);  
  34.             viewHolder=new ViewHolder();  
  35.             viewHolder.tvName=(TextView)view.findViewById(R.id.tvName);  
  36.             viewHolder.btnSave=(ImageButton)view.findViewById(R.id.btnSave);  
  37.             viewHolder.btnSave.setOnClickListener(new OnClickListener() {  
  38.                 @Override  
  39.                 public void onClick(View arg0) {  
  40.                     Toast.makeText(context,"你要收藏"+animal.getName()+"吗",Toast.LENGTH_SHORT).show();  
  41.                 }  
  42.             });  
  43.             view.setTag(viewHolder);  
  44.         }else{//如果不是第一次运行,convertView不为空,直接取出赋值给view  
  45.             view=convertView;  
  46.             viewHolder=(ViewHolder) view.getTag();  
  47.         }  
  48.         viewHolder.tvName.setText(animal.getName());//显示成语  
  49.         return view;  
  50.     }  
  51.     class ViewHolder{  
  52.         TextView tvName;  
  53.         ImageButton btnSave;  
  54.     }  
  55. }  


21.在util包下新建DialogUtil.java.java页面,作为弹出对话框的处理页面。
DialogUtil.jav页面:
[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. package cn.edu.bztc.happyidiom.util;  
  2.   
  3. import cn.edu.bztc.happyidion.activity.R;  
  4. import android.app.AlertDialog;  
  5. import android.app.AlertDialog.Builder;  
  6. import android.content.Context;  
  7. import android.content.DialogInterface;  
  8. import android.view.LayoutInflater;  
  9. import android.view.View;  
  10. import android.widget.TextView;  
  11.   
  12. public class DialogUtil {  
  13.     public static void showDialog(String result,Context context){  
  14.         AlertDialog.Builder builder=new AlertDialog.Builder(context);  
  15.         LayoutInflater layoutInflater=LayoutInflater.from(context);  
  16.         View view=layoutInflater.inflate(R.layout.dialog_info,null);  
  17.         builder.setView(view);  
  18.         TextView tvdiomInfo=(TextView)view.findViewById(R.id.tvIdiomInfo);  
  19.         tvdiomInfo.setText(result);//设置之前定义的提示语句  
  20.         builder.setPositiveButton("确定",new DialogInterface.OnClickListener() {  
  21.             @Override  
  22.             public void onClick(DialogInterface dialog, int which) {  
  23.                 dialog.dismiss();//对话框关闭  
  24.             }  
  25.         });  
  26.         builder.create().show();//打开对话框  
  27.     }  
  28. }  


22.MainActivity.java页面用于配置TabHost控件子页面。
MainActivity.java页面:
[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. package cn.edu.bztc.happyidion.activity;  
  2.   
  3. import android.app.TabActivity;  
  4. import android.content.Intent;  
  5. import android.os.Bundle;  
  6. import android.view.Menu;  
  7. import android.view.Window;  
  8. import android.widget.TabHost;  
  9.   
  10. public class MainActivity extends TabActivity{  
  11.   
  12.     private TabHost tabHost;//导航栏控件  
  13.     @Override  
  14.     protected void onCreate(Bundle savedInstanceState) {  
  15.         super.onCreate(savedInstanceState);  
  16.         requestWindowFeature(Window.FEATURE_NO_TITLE);//取消标题栏  
  17.         setContentView(R.layout.activity_main);  
  18.         tabHost=getTabHost();     //获取TabHost实例  
  19.         /*一个Tab对应一个name名称,一个标题,一个图标,yigeActivity页面*/  
  20.         addTab("study",R.string.title_study,R.drawable.study,StudyActivity.class);  
  21.         addTab("search",R.string.title_search,R.drawable.search,StudyActivity.class);  
  22.         addTab("game",R.string.title_game,R.drawable.game,StudyActivity.class);  
  23.         addTab("save",R.string.title_save,R.drawable.save,StudyActivity.class);  
  24.         addTab("help",R.string.title_help,R.drawable.help,StudyActivity.class);  
  25.     }  
  26.     /*定义每个Tab的显示内容*/  
  27.     private void addTab(String tag,int title_introduction,int title_icon,Class ActivityClass){  
  28.         tabHost.addTab(tabHost.newTabSpec(tag).setIndicator(getString(title_introduction),getResources().getDrawable(title_icon)).setContent(new Intent(this,ActivityClass)));  
  29.     }  
  30.     @Override  
  31.     public boolean onCreateOptionsMenu(Menu menu) {  
  32.         getMenuInflater().inflate(R.menu.main, menu);  
  33.         return true;  
  34.     }  
  35. }  


23.StudyActivity.java页面作为学习页面显示成语类别。
StudyActivity.java页面:
[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. package cn.edu.bztc.happyidion.activity;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.List;  
  5.   
  6.   
  7. import cn.edu.bztc.happyidiom.adapter.CategoryAdapter;  
  8. import cn.edu.bztc.happyidiom.entity.Category;  
  9.   
  10. import android.app.Activity;  
  11. import android.content.Intent;  
  12. import android.content.res.Resources;  
  13. import android.os.Bundle;  
  14. import android.util.Log;  
  15. import android.view.Menu;  
  16. import android.view.View;  
  17. import android.widget.AdapterView;  
  18. import android.widget.AdapterView.OnItemClickListener;  
  19. import android.widget.ListView;  
  20. import android.widget.Toast;  
  21.   
  22. public class StudyActivity extends Activity {  
  23.     private List<Category> categoryList;  
  24.     private String[] category_names;  
  25.     private int[] category_images;  
  26.   
  27.     @Override  
  28.     protected void onCreate(Bundle savedInstanceState) {  
  29.         super.onCreate(savedInstanceState);  
  30.         setContentView(R.layout.activity_study);  
  31.         initCategories();  
  32.         CategoryAdapter adapter=new CategoryAdapter(this,R.layout.category_item,categoryList);  
  33.         ListView listView=(ListView) findViewById(R.id.lvCategories);  
  34.         listView.setAdapter(adapter);//绑定适配器  
  35.         listView.setOnItemClickListener(new OnItemClickListener() {  
  36.             @Override  
  37.             public void onItemClick(AdapterView<?> adapter, View view, int position,  
  38.                     long id) {  
  39.                 switch (position) {//position为0代表动物类  
  40.                 case 0:  
  41.                     Intent intent=new Intent(StudyActivity.this,StudyAnimalActivity.class);  
  42.                     startActivity(intent);  
  43.                     break;  
  44.                 default:  
  45.                     break;  
  46.                 }  
  47.             }  
  48.         });  
  49.     }  
  50.   
  51.     private void initCategories() {  
  52.         categoryList = new ArrayList<Category>();  
  53.         Resources resources = getResources();  
  54.         /*获取数据源*/  
  55.         category_names = resources.getStringArray(R.array.category);  
  56.         category_images = new int[] { R.drawable.category_animal,  
  57.                 R.drawable.category_nature, R.drawable.category_human,  
  58.                 R.drawable.category_season, R.drawable.category_number,  
  59.                 R.drawable.category_fable, R.drawable.category_other };  
  60.         for(int i=0;i<category_names.length;i++){  
  61.             categoryList.add(new Category(category_names[i],category_images[i]));  
  62.         }  
  63.     }  
  64.     @Override  
  65.     public boolean onCreateOptionsMenu(Menu menu) {  
  66.         getMenuInflater().inflate(R.menu.main,menu);  
  67.         return true;  
  68.     }  
  69. }  


24.StudyAnimalActivity.java页面用于显示动物类别中具体的成语信息,以及每一项的点击事件。
StudynimalActivity.java页面:
[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. package cn.edu.bztc.happyidion.activity;  
  2.   
  3. import java.util.List;  
  4.   
  5. import cn.edu.bztc.happyidiom.adapter.AnimalAdapter;  
  6. import cn.edu.bztc.happyidiom.dao.AnimalDao;  
  7. import cn.edu.bztc.happyidiom.entity.Animal;  
  8. import cn.edu.bztc.happyidiom.util.DialogUtil;  
  9.   
  10. import android.app.Activity;  
  11. import android.os.Bundle;  
  12. import android.util.Log;  
  13. import android.view.View;  
  14. import android.widget.AdapterView;  
  15. import android.widget.AdapterView.OnItemClickListener;  
  16. import android.widget.ListView;  
  17. import android.widget.Toast;  
  18.   
  19. public class StudyAnimalActivity extends Activity{  
  20.     private List<Animal> animalList;  
  21.     private AnimalDao animalDao;  
  22.     private ListView lvAnimalList;  
  23.     @Override  
  24.     protected void onCreate(Bundle savedInstanceState) {  
  25.         super.onCreate(savedInstanceState);  
  26.         setContentView(R.layout.activity_animal);  
  27.         initAnimals();  
  28.         lvAnimalList=(ListView)findViewById(R.id.lvAnimalList);  
  29.         AnimalAdapter animalAdapter=new AnimalAdapter(this,R.layout.animal_item,animalList);  
  30.         lvAnimalList.setAdapter(animalAdapter);  
  31.         lvAnimalList.setOnItemClickListener(new OnItemClickListener() {  
  32.             @Override  
  33.             public void onItemClick(AdapterView<?> adapterView, View view, int position,  
  34.                     long id) {  
  35.                 Animal animal=animalList.get(position);  
  36.                 /*定义对话框中提示语句*/  
  37.                 String result=animal.getName()+"\n"+  
  38.                 animal.getPronounce()+  
  39.                 "\n【解释】:"+animal.getExplain()+  
  40.                 "\n【近义词】:"+animal.getHomoionym()+  
  41.                 "\n【反义词】:"+animal.getAntonym()+  
  42.                 "\n【来源】:"+animal.getDerivation()+  
  43.                 "\n【示例】:"+animal.getExamples();  
  44.                 DialogUtil.showDialog(result,StudyAnimalActivity.this);  
  45.             }  
  46.         });  
  47.     }  
  48.     /*获取成语数据*/  
  49.     private void initAnimals() {  
  50.         animalDao=AnimalDao.getInstance(this);  
  51.         animalList=animalDao.getAllAnimals();  
  52.     }  
  53. }  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值