/**
*
* 转载请标明出处:http://blog.csdn.net/u013598111/article/details/50392136
* @author:【JunTao_sun】
*
*
*/
支持大数据题库,本应用 只用了5条数据做例子,主要功能有 viewpager的滑动选题,
答题后自动滚动下一页,支持查询历史答案 ,修改答案。最后提交答题结果,并得出答案。
如果退出应用 则出现对话框提示,是否保存 记录。
答题完 选择菜单提交 答案。 退出保存记录 ,下次再进 则显示历史作答。
采用sqlite database browser 制作简单的数据库 创建两张表 分别是 问题表,和答题表
主要类有:
DaoHelp是一个数据库帮助类
Myadapter 自定义适配器
MyDialog 自定义对话框
page 展示页面
questions 和RecordForAnswer 是两个实体类
startActivity 是开始界面 跳转
MainActivity代码
<span style="font-size:18px;">package com.example.answer;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
import com.example.answer.MyDialog.NotifySaveOrDeleteListener;
import com.example.answer.Page.ViewPageScrollerListener;
import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.RelativeLayout.LayoutParams;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends FragmentActivity implements
ViewPageScrollerListener, NotifySaveOrDeleteListener, OnClickListener {
private String TAG;
//上一页按钮
private Button prebtn;
//下一页按钮
private Button nextbtn;
//解释
private TextView qustion_v;
//
private ViewPager viewpg;
//展示数据的View
private ArrayList<Page> Pages = new ArrayList<Page>();
//页数
private int mLimit;
//数据库帮助类
DaoHelp db;
// 做完选择 回调的页数
private int mMaxPage;
// 还没选择 点击上下翻页
private int mPNSelect;
private Button btn1;
private Button btn2;
//保存路径
public static final String DB_PATH = "/data/data/com.example.answer/databases/";
//表名
public static final String DA_NAME = "answer.db";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// File file1 = new File(DB_PATH + DA_NAME);
// file1.delete();
//从assets文件下的 数据库文件 保存到 应用里的databases目录下
initDataBase();
//初始化页面显示的View
intiPageView();
viewpg = (ViewPager) this.findViewById(R.id.viewpager);
viewpg.setAdapter(new MyAdapter<View>(MainActivity.this, Pages, mLimit,
MainActivity.this, db));
btn1 = (Button) this.findViewById(R.id.btn1);
btn2 = (Button) this.findViewById(R.id.btn2);
btn1.setOnClickListener(this);
btn2.setOnClickListener(this);
//设置viewpager的监听
viewpg.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int arg0) {
mPNSelect = arg0;
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// TODO Auto-generated method stub
}
@Override
public void onPageScrollStateChanged(int arg0) {
// TODO Auto-generated method stub
Log.e(TAG, "onPageScrollStateChanged" + arg0);
}
});
}
/**
* 创建并显示 对话框
*/
private void dialogCreate() {
FragmentManager fm = getSupportFragmentManager();
MyDialog dialog = new MyDialog();
// MyDialog1 dialog=new MyDialog1();
dialog.show(fm, "tip");
}
private void intiPageView() {
db = new DaoHelp();
mLimit = db.getQuestionData().size()