layout="@layout/header"
/>
--滑动-->
…省略部分代码…>
…省略部分代码…/>
--滑动结束-->
五、主Activity设计Cslab_listviewActivity.java
1.onCreate()窗口生成函数
Android软件运行后首先运行主Activity,一个Activity代表一个窗口(一个类)软件的登录及等级实验分别用一个Activity来处理。
每一个Activity都有onCreat()函数,用来生成窗口,本软件的主ActivityCslab_listviewActivity.java的oncreatr()函数设计
1、设置布局文件
setContentView(R.layout.main);
2、获取系统日期时间
SimpleDateFormatformatter=newSimpleDateFormat("yyyy-MM-dd");
SimpleDateFormattimef=newSimpleDateFormat("yyyy年MM月dd日");
SimpleDateFormatweeknumber=newSimpleDateFormat("EEE");
DatecurDate=newDate(System.currentTimeMillis());//获取当前时间
Stringstr=formatter.format(curDate);
StringweeknumberString=weeknumber.format(curDate);
zhouji=weeknumberString;
time=timef.format(curDate);
3、检查网络情况,判断系统版本
initStrictMode();//判断系统版本,防止出现NetworkOnMainThreadException异常处理,
if(!
CheckNetwork()){
NetError();
return;
}
4.从服务器获取当前第几周GetWeekNumber();保存到成员变量中。
采用多线程,避免ANR
Threadt=newThread(){
@Override
publicvoidrun(){
省略部分代码
}
};
t.start();
//接收子线程消息
handler=newHandler(){
@Override
publicvoidhandleMessage(Messagemsg){
case2:
省略部分代码
break;
}
}
};
5.根据周数获取实验信息privatevoidgetExperiment(finalStringweek)并保存
Stringexperiment=WebServiceResult(NAMESPACE,"Experiment",1,newString[]{"weeknumber"},newString[]{week});
JSONObjectJsonExperiment=newJSONObject(experiment);
ArrayExperiment=JsonExperiment.getJSONArray("ex");
6.显示实验信息publicbooleanshowexperiment()
……………………
experimentlist1=buildexperimentListForSimpleAdapter("星期一");//填充ListView的数据
notes1=newMyAdapter(this,experimentlist1,R.layout.experimentinfo,
newString[]{"section","experiment"},newint[]{R.id.section,R.id.experimentinfo});
mListView1.setAdapter(notes1);
mViews.add(mListView1);
…………………
7.显示本周实验信息privatevoidLoadThisweekExperiment()
privatevoidLoadExperiment(){
ThreadThnextweek=newThread(){
@Override
publicvoidrun(){
}};
Thnextweek.start();
nehandler=newHandler(){
@Override
publicvoidhandleMessage(Messagemsg){
switch(msg.what){
case1:
break;
}
}};
}
8.用变量记录程序运行时用户上下周跳转导致的周数变化,并用privatevoidLoadExperiment()显示实验信息
读取用户保存的账号信息privatevoidgetusernamefromsetting()
service=newPreferencesService(this);
Mapparams=service.getUsername();
usernameString=params.get("username");
9.其他……………………………
六、登录模块设计loginActivity.java
1.用户名密码输入
EditTextusernameEdit;
EditTextpasswordEdit;
2.处理登录请求,提交给Webservice服务器,并返回登录结果成功或失败privatevoidlogin()
3.返回主界面
publicclassloginActivityextendsActivity{
privatePreferencesServiceservice;
privatestaticfinalStringNAMESPACE="//Webservice命名空间
privatestaticStringURL="//WebService地址
StringusernameString="";
StringpasswordString="";
EditTextusernameEdit;
EditTextpasswordEdit;
Handlerhandler;
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.login);
getusernamefromsetting();
usernameEdit=(EditText)findViewById(R.id.username_edit);
passwordEdit=(EditText)findViewById(R.id.password_edit);
usernameEdit.setText(usernameString);
passwordEdit.setText(passwordString);
usernameEdit.addTextChangedListener(newTextWatcher(){
省略代码
});
passwordEdit.addTextChangedListener(newTextWatcher(){
省略代码
});
Buttonlogin_button=(Button)findViewById(R.id.signin_button);
Buttonclear=(Button)findViewById(R.id.clear);
ButtonButton01=(Button)findViewById(R.id.Button01);
Button01.setOnClickListener(newButton.OnClickListener(){
@Override
publicvoidonClick(Viewarg0){
//TODO自动生成的方法存根
省略代码
}
});
clear.setOnClickListener(newButton.OnClickListener(){
@Override
publicvoidonClick(Viewv){
清除账号信息,省略代码
}});
login_button.setOnClickListener(newButton.OnClickListener(){
@Override
publicvoidonClick(Viewv){
验证输入是否正确,省略代码
elselogin();
}
});
}
privatevoidlogin(){
//TODO自动生成的方法存根
Threadt=newThread(){
@Override
publicvoidrun(){
新线程处理登录
}
};
t.start();//启动线程
//接收子线程消息
handler=newHandler(){
@Override
publicvoidhandleMessage(Messagemsg){
//TODOAuto-generatedmethodstub
switch(msg.what){
case1:
处理登录结果,并提示用户,省略代码
break;
}
}
};
}
//web服务调用的函数
publicStringWebServiceResult(Stringns,Stringmethod,intarg_number,String[]arg_name,String[]arg_value){
Stringre=arg_name[0]+arg_value[0];
try{
SoapObjectrpc=newSoapObject(ns,method);
if(arg_number!
=0)
{
for(inti=0;irpc.addProperty(arg_name[i].toString(),arg_value[i].toString());
}
AndroidHttpTransportht=newAndroidHttpTransport(URL);
ht.debug=true;
SoapSerializationEnvelopeenvelope=newSoapSerializationEnvelope(
SoapEnvelope.VER11);
envelope.bodyOut=rpc;
envelope.dotNet=true;
envelope.setOutputSoapObject(rpc);
ht.call(ns+method,envelope);
SoapObjectresult=(SoapObject)envelope.bodyIn;
re=result.getProperty(0).toString();
}catch(Exceptione){
e.printStackTrace();
}
returnre;
}
七、登记实验模块设计:
1.检查用户是否登录,若登陆继续,否则返回privatevoidchecklogin(){
2.文本输入框(EditView)、列表选择框(spanner)、日期控件设置
3.从服务器获取机房信息privatevoidgetTestRoom(){
4.提交实验信息并返回处理结果给用户privatevoidsubExperiment()
5.返回主界面
publicclassaddexperimentextendsActivity{
privatestaticfinalStringNAMESPACE="//Webservice命名空间
privatestaticStringURL="//WebService地址
Handlerhandler;
privateintmYear;
privateintmMonth;
privateintmDay;
DatePickerdp;
Stringusername="";
Stringpassword="";
Stringroom="";
Stringtime="";
Stringname="客户端测试";
Stringnumberstring="";
Stringteacher="test";
StringclassString="计科101";
StringcoursenameString="客户端测试";
EditTextexperimentname;
EditTextexperimentteacher;
EditTextexperimentclass;
EditTextcoursename;
Spinnernumber;
privatePreferencesServiceservice;
StringusernameString="";
StringpasswordString="";
privateSpinnerroomSpinner;
privateListlist=newArrayList();
privateListnumberlist=newArrayList();
privateArrayAdapterroomadapter;
privateArrayAdapternumberadapter;
@Override
publicvoidonCreate(BundlesavedInstanceState){
checklogin();
Calendarc=Calendar.getInstance();
mYear=c.get(Calendar.YEAR);
mMonth=c.get(Calendar.MONTH);
mDay=c.get(Calendar.DAY_OF_MONTH);
time=""+mYear+"-"+(mMonth+1)+"-"+mDay;
super.onCreate(savedInstanceState);
setContentView(R.layout.editcourse);
/*取得TextView对象,并调用updateDisplay()来设置显示的初始日期时间*/
//tv=(TextView)findViewById(R.id.showTime);
//updateDisplay();
/*取得DatePicker对象,以init()设置初始值与onDateChangeListener()*/
dp=(DatePicker)findViewById(R.id.dPicker);
dp.init(mYear,mMonth,mDay,newDatePicker.OnDateChangedListener(){
@Override
publicvoidonDateChanged(DatePickerview,intyear,intmonthOfYear,intdayOfMonth)
{
mYear=year;
mMonth=monthOfYear+1;
mDay=dayOfMonth;