package com.nsmss.scuol.personal;
import java.util.ArrayList;
import java.util.Map;
import com.nsmss.scuol.R;
import com.nsmss.scuol.bean.GlobalInfo;
import com.nsmss.scuol.bean.UserData;
import com.nsmss.scuol.common.NetHelper;
import com.nsmss.scuol.dao.GlobalInfoDao;
import com.nsmss.scuol.dao.RollInfoDao;
import com.nsmss.scuol.dao.UserDataDao;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.widget.Button;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;
public class RollActivity extends Activity {
/**
* 静态成员变量
*/
private static Context context;
/**
* UI相关成员变量
*/
private ProgressDialog progressDialog;
private SimpleAdapter sAdapter;
/**
* View相关成员变量
*/
View backView;
View refreshView;
ListView rollListView;
/**
* Dao成员变量
*/
GlobalInfoDao gDao;
private UserDataDao uDao;
RollInfoDao prDao;
/**
* 数据模型变量
*/
GlobalInfo gInfo;
private UserData uData;
/**
* 数据存储变量
*/
ArrayList <Map<String, String>> rollList;
/**
* 状态变量
*/
/**
* 临时变量
*/
int uid;
/**
* Activity回调函数
*/
@Override
protected void onCreate(Bundle savedInstanceState) {
// 继承父类方法,绑定View
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_roll);
// 初始化context
context = getApplicationContext();
// 初始化View成员变量
// 初始化Dao成员变量
gDao = new GlobalInfoDao(context);
uDao = new UserDataDao(context);
prDao = new RollInfoDao(context);
// 初始化数据模型变量
gInfo = gDao.query();
uid = gInfo.getActiveUserUid();
uData = uDao.query(uid);
rollList = prDao.query(uid);
// 初始化状态变量
// 初始化临时变量
// 自定义函数
initView();
initListener();
}
@Override
protected void onPause() {
super.onPause();
}
@Override
protected void onStop() {
super.onStop();
}
@Override
protected void onResume() {
super.onResume();
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) {
jumpToPersonal();
return true;
}
return super.onKeyDown(keyCode, event);
}
/**
* 线程对象
*/
// 连接线程
private Runnable connRunnable = new Runnable() {
@Override
public void run() {
NetHelper nHelper = new NetHelper();
rollList = nHelper.getRoll(uData);
// 如果连接成功,返回了更新数据
if (rollList != null) {
// 判断状态对话框是否显示
if (progressDialog.isShowing()) {
if (prDao.update(rollList, uid)) {
progressDialog.dismiss();
runOnUiThread(succRunnable);
}
else {
progressDialog.dismiss();
runOnUiThread(errURunnable);
}
}
}
// 连接错误
else {
// 判断状态对话框是否显示
if (progressDialog.isShowing()) {
progressDialog.dismiss();
runOnUiThread(errRunnable);
}
}
}
};
// 连接成功线程
private Runnable succRunnable = new Runnable() {
@Override
public void run() {
updateRoll();
}
};
// 连接错误线程
private Runnable errRunnable = new Runnable() {
@Override
public void run() {
Toast.makeText(RollActivity.this, "连接错误!请检查网络连接!", Toast.LENGTH_SHORT).show();
}
};
// 更新错误线程
private Runnable errURunnable = new Runnable() {
@Override
public void run() {
Toast.makeText(RollActivity.this, "更新错误!", Toast.LENGTH_SHORT).show();
}
};
/**
* 自定义成员对象
*/
/**
* 自定义方法
*/
private void initView() {
backView = findViewById(R.id.Btn_Roll_Back);
refreshView = findViewById(R.id.Btn_Roll_Refresh);
rollListView = (ListView) findViewById(R.id.List_Roll_Main);
if (rollList == null) {
rollList = new ArrayList<Map<String, String>>();
}
updateRoll();
}
private void initListener() {
backView.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
jumpToPersonal();
}
});
refreshView.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
refreshRoll();
}
});
}
private void jumpToPersonal() {
Intent intent=new Intent();
intent.setClass(RollActivity.this, PersonalActivity.class);
startActivity(intent);
overridePendingTransition(R.anim.slide_left_in, R.anim.slide_right_out);
finish();
}
private void refreshRoll() {
// 显示状态对话框
progressDialog = new ProgressDialog(this);
progressDialog.setIndeterminate(true);
progressDialog.setMessage(getResources().getString(R.string.loading_tip));
progressDialog.setCancelable(true);
progressDialog.show();
// 开启连接线程
new Thread(connRunnable).start();
}
private void updateRoll() {
if (rollList == null) {
return;
}
sAdapter = new SimpleAdapter(this, rollList, R.layout.list_item_personal_roll,
new String[] { "key", "value" },
new int[] { R.id.Text_Roll_List_Key, R.id.Text_Roll_List_Value});
rollListView.setAdapter(sAdapter);
rollListView.setDivider(null);
}
}