Android:AsyncTask

原创 2015年11月17日 19:12:48
public class MainActivity extends Activity implements OnClickListener {

	private ORMLiteDatabaseHelper mDatabaseHelper;
	private Dao<MyClass, Integer> mClassDao;
	private Dao<Student, Integer> mStudentDao;
	private boolean temp;
	ListView list_view;
	EditText edit;
	Object ob;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		list_view = (ListView) findViewById(R.id.list_view);
		Button create = (Button) findViewById(R.id.create);
		Button query = (Button) findViewById(R.id.query);
		edit = (EditText) findViewById(R.id.edit);

		create.setOnClickListener(this);
		query.setOnClickListener(this);

	}

	@Override
	public void onClick(View v) {
		switch (v.getId()) {
		case R.id.create:
			temp = true;
			MyAsyncTask mAsyncTask = new MyAsyncTask();
			mAsyncTask.execute();//执行语句

			break;
		case R.id.query:
			Integer id = Integer.parseInt(edit.getText().toString());
			temp = false;
			if (id <= 3 && id >= 1) {
				MyAsyncTask mTask = new MyAsyncTask();
				mTask.execute(id);
			}else{
				Toast.makeText(this, "班级不存在", Toast.LENGTH_SHORT).show();
			}
			break;

		default:
			break;
		}
	}

	public class MyAsyncTask extends AsyncTask {

		public MyAsyncTask() {

		}
		//doInBackground 繁琐事件多数在这里执行处理
		@Override
		protected List<Student> doInBackground(Object... params) {

			if (temp) {
				create();
				return null;
			} else {
				ForeignCollection<Student> student = query((Integer) params[0]);
				List<Student> result = new ArrayList<Student>();
				for (Student stu : student) {
					result.add(stu);
				}
				return result;
			}

		}
	//onPostExecute 可直接设置UI界面
		@Override
		protected void onPostExecute(Object result) {

			if (result == null) {
				Toast.makeText(MainActivity.this, "创建数据库成功", Toast.LENGTH_SHORT).show();
			} else {
				Toast.makeText(MainActivity.this, "查询成功", Toast.LENGTH_SHORT).show();

				List<Student> list = (List<Student>) result;
				list_view.setAdapter(new ArrayAdapter(MainActivity.this, android.R.layout.simple_list_item_1, list));
			}
		}
	}

	public void create() {

		mDatabaseHelper = ORMLiteDatabaseHelper.getInstance(this);
		mClassDao = mDatabaseHelper.getClassDao();
		mStudentDao = mDatabaseHelper.getStudentDao();

		for (int i = 1; i < 4; i++) {

			MyClass myclass = new MyClass();

			myclass.myclass_id = i;
			myclass.name = i + "班";

			try {
				mClassDao.createIfNotExists(myclass);
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			String[] studentName = { "王二", "张三", "李四", "刘五", "赵六" };
			String[] studentSex = { "男", "女" };
			Random rand = new Random();
			for (int j = 0; j < 5; j++) {

				Student stu = new Student();

				stu.student_id = j;
				stu.name = studentName[rand.nextInt(5)];
				stu.age = 18 + j;
				stu.sex = studentSex[rand.nextInt(2)];

				stu.mclass = myclass;

				try {
					mStudentDao.createIfNotExists(stu);
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
	}

	public ForeignCollection<Student> query(Integer id) {
		try {
			MyClass mclass = mClassDao.queryForId(id);

			ForeignCollection<Student> student = mclass.student;

			return student;
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return null;
	}

}

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

android AsyncTask完全解析

  • 2014-09-29 11:57
  • 366KB
  • 下载

android - AsyncTask 异步操作

什么是异步 异步有个兄弟叫同步。同步就像,没刷牙,不能洗脸。异步可以一边刷牙一边洗脸。两个同时进行,互不影响。 什么是AsyncTask AsyncTask是android提供的轻量级的异步类(还有...

Android异步处理二:使用AsyncTask异步更新UI界面

Android异步处理系列文章索引 Android异步处理一:使用Thread+Handler实现非UI线程更新UI界面 Android异步处理二:使用AsyncTask异步更新U...

Android asyncTask的使用

  • 2016-03-17 13:46
  • 3.34MB
  • 下载

详解Android中AsyncTask的使用

在Android中实现异步任务机制有两种方式,Handler和AsyncTask。 Handler模式需要为每一个任务创建一个新的线程,任务完成后通过Handler实例向UI线程发送消息,完成界...

Android AsyncTask完全解析

  • 2014-07-27 09:34
  • 366KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)