admin 管理员组文章数量: 1086019
2023年12月18日发(作者:linux全局变量和局部变量)
移动互联网开发
课程设计报告
学生姓名: 万 思 学 号: k*********
专 业: 计算机科学与技术 班 级: k0312415
设计题目: 口袋微博
学年学期: 2014 年 秋 季学期
指导教师: **
目 录 (示例)
一、
二、
三、
1
2
3
4
四、
五、
设计题目 .................................................................................................................................... 1
设计目的 .................................................................................................................................... 1
设计原理及方案 ........................................................................................................................ 1
使用的软件工具和环境 ............................................................................................................ 1
需求分析与概要设计 ................................................................................................................ 1
数据库设计(若有) ................................................................................................................ 2
详细设计和关键问题 ................................................................................................................ 3
实现效果 .................................................................................................................................... 8
设计体会 .................................................................................................................................. 69
参 考 文 献 ............................................................................................................................................................. 71
一、 设计题目
Android社交分享平台——口袋微博 设计目的
二、 设计原理及方案
首先要实现以下这些功能:
Android端登录和注册模块的实现
Android端个人中心模块的实现
Android端快速发布模块的实现
Android端查看联系人模块的实现
Android端管理日志模块的实现
Android端管理相册模块的实现
1 使用的软件工具和环境
1)PC计算机
2)JDK安装包
3)Eclipse安装包
4)Android SDK安装包
5)ADT插件
2 需求分析与概要设计
(详细描述系统的功能需求)
Android端登录和注册模块的实现
Android端个人中心模块的实现
Android端快速发布模块的实现
Android端查看联系人模块的实现
Android端管理日志模块的实现
Android端管理相册模块的实现
(详细描述系统结构;例如总体架构设计、流程图、用例图等,并分别描述)
说明:这里的用例图和类图的对应关系可以在下面的E-R图上找到,这里我就略了一下。
1
Android端总体架
Android端
登录
注册
退出
管理个人 快速发布
查看联系
搜索用户
查看联系
拍照上传
发布日志
更新心情
博友主页
Web端的原理示意图
MyServlet
DBUtil
数据源
数
据
库
2
数据库设计(若有的必须给出,没有的给出其他重要设计过程)
(给出ER关系图及数据库表)
用powerdesigner设计对应关系,并生成表,E-R图
3 详细设计和关键问题
(分功能模块描述设计细节,例如详细功能图、类图和关键流程图等。遇到的关键Android问题是如何解决的)
相册列表:功能图
3
查看
4
修改权限
5
二、快速发布:
6
7
三、 实现效果
(包括系统描述和程序运行界面的截图)
1.口袋微博用户登录界面
2.口袋微博个人中心——快速发布功能界面
8
3.口袋微博个人中心——我的好友功能界面
9
4.口袋微博个人中心——最近访客功能界面
10
11
5.口袋微博个人中心——日志列表功能界面
6.口袋微博个人中心——相册列表功能界面
12
7.口袋微博——搜索好友界面
13
以下是部分重要代码由于代码太多无法容纳
(1)登录界面
package ;
import static _ADDRESS;
import static _PORT;
import ty;
import ssDialog;
import ;
import Preferences;
import ;
import ;
import ;
import ;
import ox;
import xt;
import utton;
14
import ;
public class LoginActivity extends Activity {
MyConnector mc = null;
ProgressDialog pd;
@Override
public void onCreate(Bundle savedInstanceState) {
te(savedInstanceState);
setContentView();
checkIfRemember();
Button btnLogin = (Button)findViewById(in);
lickListener(new kListener() {
});
@Override
public void onClick(View v) {
}
pd = (, "请稍候", "正在连接服务器...", true, true);
login();
Button btnReg = (Button)findViewById();
lickListener(new kListener() {
});
@Override
public void onClick(View v) {
}
Intent intent = new Intent(, );
startActivity(intent);
finish();
ImageButton ibExit = (ImageButton)findViewById();
lickListener(new kListener() {
});
@Override
public void onClick(View v) {
}
ocess(()); //结束进程,退出程序
}
15
//方法:连接服务器进行登录
public void login(){
new Thread(){
public void run(){
e();
try{
if(mc == null){
}
EditText etUid = (EditText)findViewById(); //获得帐号EditText
EditText etPwd = (EditText)findViewById(); //获得密码EditText
mc = new MyConnector(SERVER_ADDRESS, SERVER_PORT);
String uid = tableText().toString().trim(); //获得输入的帐号
String pwd = tableText().toString().trim();
if(("") || ("")){
//获得输入的密码
//判断输入是否为空
"请输入帐号或密码!", xt(,
_SHORT).show();//输出提示消息
}
String msg = "<#LOGIN#>"+uid+"|"+pwd;
TF(msg);
//组织要返回的字符串
//发出消息
return;
String receivedMsg = F();
s();
//读取服务器发来的消息
if(With("<#LOGIN_SUCCESS#>")){ //收到的消息为登录成功消息
receivedMsg = ing(17);
String [] sa = ("|");
CheckBox cb = (CheckBox)findViewById(mber); //获得CheckBox对象
if(ked()){
}
//转到功能面板
Intent intent = new Intent(,);
ra("uno", sa[0]);
startActivity(intent);
finish();
16
rememberMe(uid,pwd);
//启动功能Activity
}
else if(With("<#LOGIN_FAIL#>")){ //收到的消息为登录失败
xt(, ing(14),
_LONG).show();
();
er().quit();
}
}catch(Exception e){
tackTrace();
}
}
}.start();
}
//方法:将用户的id和密码存入Preferences
public void rememberMe(String uid,String pwd){
SharedPreferences sp = getPreferences(MODE_PRIVATE); //获得Preferences
editor = (); //获得Editor
ing("uid", uid); //将用户名存入Preferences
ing("pwd", pwd); //将密码存入Preferences
();
}
//方法:从Preferences中读取用户名和密码
public void checkIfRemember(){
SharedPreferences sp = getPreferences(MODE_PRIVATE); //获得Preferences
String uid = ing("uid", null);
String pwd = ing("pwd", null);
if(uid != null && pwd!= null){
EditText etUid = (EditText)findViewById();
EditText etPwd = (EditText)findViewById();
CheckBox cbRemember = (CheckBox)findViewById(mber);
t(uid);
t(pwd);
cked(true);
}
17
}
@Override
protected void onDestroy() {
if(mc != null){
();
}
roy();
}
}
(2)
package ;
import static _ADDRESS;
import static _PORT;
import ist;
import ty;
import ;
import ;
import y;
import ;
18
import oup;
import rView;
import apter;
import Layout;
import ew;
import ew;
import ClickListener;
public class DiaryActivity extends Activity{
ArrayList
MyConnector mc = null;
String uno = null;
String visitor = null;
BaseAdapter ba = new BaseAdapter() {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LinearLayout ll = new LinearLayout();
TextView tvTitle = new TextView();
entation(AL);
tAppearance(, );
vity(); //设置TextView的对齐方式
t((position)[1]);
TextView tvContent = new TextView();
tAppearance(, t); //设置字体大小 vity(); //设置TextView的对齐方式
t((position)[2]); //设置显示的内容
w(tvTitle);
w(tvContent);
return ll;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
19
public Object getItem(int arg0) {
return null;
}
@Override
public int getCount() {
return ();
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
te(savedInstanceState);
Intent intent = getIntent();
uno = ingExtra("uno"); //获得主人ID
visitor = ingExtra("visitor"); //获得访客ID
getDiaryList();
setContentView();
ListView lvDiary = (ListView)findViewById(y); //获得ListView对象 pter(ba);
temClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView> parent, View v, int position,
long id) {
Intent intent = new Intent(,);
ra("rid", (position)[0]);
ra("uno", uno);
ra("visitor", visitor);
startActivity(intent);
}
});
}
//方法:获取日志列表
public void getDiaryList(){
new Thread(){
public void run(){
try{
20
mc = new MyConnector(SERVER_ADDRESS, SERVER_PORT);
TF("<#GET_DIARY#>"+uno+"|"+"1");
int size = t(); //读取日志的长度
for(int i=0;i String diaryInfo = F(); //读取日志信息 String [] sa = ("|"); (sa); //将日志信息添加到列表中 } }catch(Exception e){ tackTrace(); } } }.start(); } @Override protected void onDestroy() { if(mc != null){ (); mc = null; } roy(); } } (3)口袋微博_____个人中心 package ; import static ntUtil.*; import ty; import ialog; import ssDialog; 21 import Interface; import ; import ; import ; import y; import Inflater; import ; import oup; import Params; import rView; import apter; import xt; import iew; import Layout; import ew; import ew; import ; import ClickListener; public class PublishActivity extends Activity{ String [] items = { //存放ListView中的选项内容 "更新心情","发布日志","拍照上传" }; int [] imgIds = { le.p_status, le.p_diary, le.p_shoot }; String uno = null; //存放 MyConnector mc = null; //MyConnector对象引用 ProgressDialog pd = null; //ProgressDialog对象引用 View dialog_view = null; //心情 BaseAdapter ba = new BaseAdapter() { @Override public View getView(int position, View convertView, ViewGroup parent) { 22 LinearLayout ll = new LinearLayout(); entation(NTAL); vity(); ImageView iv = new ImageView(); ustViewBounds(true); geResource(imgIds[position]); w(iv); //设置ImageView的 //将ImageView添加 //创建ImageView对象 到线性布局中 TextView tv = new TextView(); ding(10, 0, 0, 0); outParams(new Params(_CONTENT, _CONTENT)); }; @Override protected void onCreate(Bundle savedInstanceState) { te(savedInstanceState); Intent intent = getIntent(); //获得启动该Activity的Intent } @Override public long getItemId(int position) { } @Override public Object getItem(int position) { } @Override public int getCount() { } return ; return null; return 0; tAppearance(, ); t(items[position]); w(tv); return ll; //设置TextView显示的内容 uno = ingExtra("uno"); 23 setContentView(h); //设置当前屏幕 //获得ListView对象引用 ListView lvPublish = (ListView)findViewById(ish); pter(ba); temClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView> parent, View v, int position, long id) { //判断点击的是哪一个选项 switch(position){ case 0: //更新心情 LayoutInflater li = (); dialog_view = e(h_status, null); new r() .setTitle("更新心情") .setIcon(le.p_status) .setView(dialog_view) .setPositiveButton( "发表", new kListener() { @Override public void onClick(DialogInterface dialog, int which) { pd = (, "请稍候", "正在更新心情...",true,true); }) } updateStatus(); .setNegativeButton( "取消", new kListener() { }) @Override public void onClick(DialogInterface dialog, int which) {} .show(); break; //发表日志 case 1: Intent intent1 = new Intent(,);//创建Intent 24 ra("uno", uno); //设置Intent的Extra字段 startActivity(intent1); break; case 2: //拍照上传 Intent intent2 = new Intent(,);//创建Intent ra("uno", uno); //设置Intent的Extra字段 startActivity(intent2); break; } } }); } //方法:连接服务器,更新心情 public void updateStatus(){ new Thread(){ public void run(){ e(); EditText etStatus = (EditText)dialog_ewById(tStatus); String status = tableText().toString().trim(); //获得心情内容 if(("")){ //如果输入的心情为空 s(); xt(, "请输入更新的心_LONG).show();//输出提示 (); return; } String message = "<#NEW_STATUS#>"+status+"|"+uno; if(mc == null){ mc = new MyConnector(SERVER_ADDRESS, SERVER_PORT); } try{ TF(message); //向服务器发送更新的心情 pd = (, "正在连接网络", "请稍候",true); String reply = F(); //从服务器返回的回复 s(); 情", 25 if(("<#STATUS_SUCCESS#>")){ //心情更新成功 xt(, "心情更新成功!_LONG).show(); (); } else { //心情更新失败 xt(, "心情更新失败!_LONG).show(); (); } }catch(Exception e){ tackTrace(); } er().quit(); } }.start(); } @Override protected void onDestroy() { if(mc != null){ (); } roy(); } } (4)注册处理____ package ; import static _ADDRESS; ", ", 26 import static _PORT; import ty; import ssDialog; import ; import ; import r; import ; import e; import ; import ; import xt; import Layout; import ; public class RegActivity extends Activity{ MyConnector mc = null; //声明MyConnector对象 String uno = ""; //记录用户的ID ProgressDialog pd= null; //声明进度对话框 Handler myHandler = new Handler(){ @Override public void handleMessage(Message msg) { switch(){ case 0: View linearLayout = (LinearLayout)findViewById(ult); //获得线性布局 ibility(E); //设置可见性 EditText etUno = (EditText)findViewById(); t(uno); break; } Message(msg); } }; @Override protected void onCreate(Bundle savedInstanceState) { te(savedInstanceState); 27 器 setContentView(); //设置当前屏幕 Button btnReg = (Button)findViewById(); lickListener(new kListener() { }); Button btnBack = (Button)findViewById(k); @Override public void onClick(View v) { } //获得注册Button按钮对象 pd = (, "请稍候...", "正在连接服务器...", false); register(); //获得返回按钮对象 //为返回按钮添加监听器 lickListener(new kListener() { }); Button btnEnter = (Button)findViewById(er); lickListener(new kListener() { @Override public void onClick(View v) { } Intent intent = new Intent(,); //创建Intent对象 startActivity(intent); finish(); //启动Activity //获得进入功能面板按钮对象 //为进入功能面板的按钮添加监听 } }); @Override public void onClick(View v) { } Intent intent = new Intent(,); ra("uno", uno); startActivity(intent); finish(); //设置Extra字段 //启动FunctionTab //关闭该Activity //创建Intent //方法:连接服务器,进行注册 public void register(){ new Thread(){ public void run(){ e(); 28 //获得用户输入的数据并进行验证 EditText etName = (EditText)findViewById(); EditText etPwd1 = (EditText)findViewById(1); EditText etPwd2 = (EditText)findViewById(2); //获得昵称EditText对象 //获得密码EditText对象 //获得确认密码EditText对象 EditText etEmail = (EditText)findViewById(l); EditText etStatus = (EditText)findViewById(us); String name = tableText().toString().trim(); String pwd1 = tableText().toString().trim(); String pwd2 = tableText().toString().trim(); String email = tableText().toString().trim(); //获得邮箱EditText对象 //获得心情EditText对象 //获得昵称 //获得密码 //获得确认密码 //获得邮箱 String status = tableText().toString().trim(); //获得状态 if(("") || ("") || ("") || ("") || ("")){ xt(, "请将注册信息填写完整", _LONG).show(); } if(!(pwd2)){ //判断两次输入的密码是否一致 "两次输入的密码不一致!", return; xt(, _LONG).show(); } try{ mc = new MyConnector(SERVER_ADDRESS, SERVER_PORT); String regInfo = "<#REGISTER#>"+name+"|"+pwd1+"|"+email+"|"+status; TF(regInfo); String result = F(); s(); if(With("<#REG_SUCCESS#>")){ } else{ //注册失败 29 return; //返回信息为注册成功 result= ing(15); uno = result; //去掉信息头 //记录用户的ID //发出Handler消息 ptyMessage(0); xt(, "注册成功!", _LONG).show(); xt(, "注册失败!请重试_LONG).show(); } } catch(Exception e){ tackTrace(); } } }.start(); } @Override protected void onDestroy() { if(mc != null){ (); } roy(); } } (5) package ; import static WITCHER_HEIGHT; import static _HEIGHT; import static _WIDTH; import static _ADDRESS; import static _PORT; import ist; import ; import ty; import ialog; import Interface; import ; !", 30 import ; import Factory; import ; import Drawable; import le; import lity; import ; import r; import ; import e; import ; import oup; import ionUtils; import rView; import apter; import ; import y; import witcher; import iew; import r; import ew; import ; import itcher; import ClickListener; import SelectedListener; public class AlbumActivity extends Activity implements ctory{ List Bitmap [] photoList; //存放图片的数组 Gallery gl = null; //Gallery对象的引用 ImageSwitcher is = null; //ImageSwitcher对象的引用 Spinner sp = null; //Spinner对象的引用 MyConnector mc = null; //MyConnector对象的引用 String xid = ""; //存放相册的ID String uno = ""; //存放用户ID 31 String visitor = ""; String pid = ""; int from = -1; //存放访问者的ID //存放当前显示的照片ID //启动该Activity的来源,0为MyAlbumListActivity,1为AlbumListActivity List //Spinner的Adapter BaseAdapter baSpinner = new BaseAdapter() { @Override public View getView(int position, View convertView, ViewGroup parent) { TextView tv = new TextView(); tSize(18.5f); tColor(); String [] sa = (position); t(sa[1]); return tv; } @Override public long getItemId(int position) { return 0; } @Override public Object getItem(int position) { return null; } @Override public int getCount() { return (); } }; //Gallery的Adapter BaseAdapter baGallery= new BaseAdapter() { @Override public View getView(int position, View convertView, ViewGroup parent) { ImageView iv = new ImageView(); ustViewBounds(true); 32 outParams(new Params(PHOTO_WIDTH, PHOTO_HEIGHT)); Height(PHOTO_HEIGHT); //设置ImageView显示的高度 Width(PHOTO_WIDTH); //设置ImageView显示的宽度 geBitmap(photoList[position]); //设置ImageView显示的内容 return iv; } @Override public long getItemId(int position) { return 0; } @Override public Object getItem(int position) { return null; } @Override public int getCount() { if(photoList != null){ return ; } else{ return 0; } } }; //点下Gallery中的图片后触发的事件监听器 OnItemClickListener myListener = new OnItemClickListener() { @Override public void onItemClick(AdapterView> parent, View v, int position, long id) { if(is != null){ //如果ImageSwitcher不为空 Drawable d = new BitmapDrawable(photoList[position]); geDrawable(d); } } }; 33 Handler myHandler = new Handler(){ @Override public void handleMessage(Message msg) { switch(){ case 0: pter(baGallery); geDrawable(new BitmapDrawable(photoList[0])); break; } Message(msg); } }; @Override protected void onCreate(Bundle savedInstanceState) { te(savedInstanceState); setContentView(); //设置当前屏幕 Intent intent = getIntent(); //获取启动该Activity的Intent uno = ingExtra("uno"); //获得Extra字段的uno visitor = ingExtra("visitor"); from = Extra("from", -1); //获得Extra字段的from int position = Extra("position", 0); //获得被选中的相册 String [] albumInfoArray = ingArrayExtra("albumlist"); //获得相册信息数组 xid = ingExtra("xid"); //获得被选中的相册编号 albumInfoList = new ArrayList for(String s:albumInfoArray){ //遍历信息数组 String [] sa = ("|"); (sa); //构建相册信息列表 } sp = (Spinner)findViewById(m); //获得Spinner对象 pter(baSpinner); //设置Spinner对象的Adapter ection(position); //选中在前一个Activity中被选中的相册 temSelectedListener(new OnItemSelectedListener() { //为Spinner添加监听器 @Override public void onItemSelected(AdapterView> parent, View v, int position, long id) { 34 }); } xid = (position)[0]; getPhotoList(); //修改存储相册ID的成员变量 //获得相册中的相片列表 @Override public void onNothingSelected(AdapterView> parent) {} gl = (Gallery)findViewById(yPhoto); temClickListener(myListener); //获得Gallery对象 //设置Gallery的OnItemClickListener监听器 //获得ImageSwitcher对象 is = (ImageSwitcher)findViewById(o); tory(this); //设置ImageSwitcher的Factory //设置nimation(imation(this, _in)); 的In动画 Animation(imation(this, _out));//设置ImageSwitcher的Out动画 Button btnBack = (Button)findViewById(umBack); lickListener(new kListener() { @Override public void onClick(View v) { switch(from){ case 0: //判断启动该Activity的来源 //有MyAlbumListActivity启动 //获得返回按钮btnBack Intent intent1 = new Intent(,); ra("uno", uno); ra("tab", "tab5"); startActivity(intent1); finish(); break; //由AlbumListActivity启动 case 1: } Intent intent2 = new Intent(,); ra("uno", uno); ra("visitor", visitor); ra("tab", "tab2"); startActivity(intent2); finish(); break; 35 } }); Button btnDeletePhoto = (Button)findViewById(etePhoto); if(visitor != null){ //不是查看自己的相册 ibility(); //如果不是自己的相册,隐藏删除按钮 } lickListener(new kListener() { @Override public void onClick(View v) { new r() .setTitle("提示") .setIcon(_icon) .setMessage("确认删除该照片?") .setPositiveButton( "确定", new kListener() { @Override public void onClick(DialogInterface dialog, int which) { int pos = ectedItemPosition(); pid = (pos)[0]; deletePhoto(); } }) .setNegativeButton( "取消", null) .show(); } }); } public void getPhotoList(){ new Thread(){ public void run(){ e(); 36 try{ mc = null; mc = new MyConnector(SERVER_ADDRESS, SERVER_PORT); TF("<#GET_ALBUM#>"+xid); int size = 0; //获得相册长度 //读取相册的长度 size = t(); if(size == 0){ xt(, "该相册还未上传照片", _LONG).show(); } //方法:删除指定照片 public void deletePhoto(){ new Thread(){ public void run(){ e(); 37 } } (); return; photoInfoList = new ArrayList photoList = new Bitmap[size]; for(int i=0;i } ptyMessage(0); //循环获取图片数据 //读取相片信息 //切割字符串 String photoInfo = F(); String [] sa = ("|"); (sa); //将相片信息添加到列表中 //读取相片长度 //创建相应长度的数组 int photoLength = t(); byte [] buf = new byte[photoLength]; (buf); //读入图片数据 photoList[i] = ByteArray(buf, 0, photoLength); //创建Bitmap }catch(Exception e){ } tackTrace(); }.start(); try{ if(mc ==null){ mc = new MyConnector(SERVER_ADDRESS, SERVER_PORT); } String msg = "<#DELETE_PHOTO#>"+pid; TF(msg); String reply = F(); if(("<#DELETE_PHOTO_SUCCESS#>")){ xt(, "照片删除成功!_LONG).show(); } else { xt(, "删除失败,请重试!_LONG).show(); } getPhotoList(); (); }catch(Exception e){ tackTrace(); } } }.start(); } @Override public View makeView() { ImageView iv = new ImageView(this); leType(_INSIDE); outParams(new Params(IMAGESWITCHER_HEIGHT,IMAGESWITCHER_HEIGHT)); return iv; } @Override protected void onDestroy() { if(mc != null){ (); ", ", 38 mc = null; } roy(); } } (6) package ; import static _ADDRESS; import static _PORT; import ist; import ty; import ; import ; import r; import ; import e; import y; import ; 39 import oup; import kListener; import Params; import rView; import apter; import ew; import ew; import ; import ClickListener; /* * 该Activity的主要功能是显示好友的相册列表 * 和MyAlbumActivity有所区别。 */ public class AlbumListActivity extends Activity{ MyConnector mc = null; ListView lvAlbumList = null; ArrayList String [] albumArray; //存放好友相册信息的数组 String uno = null; //存放被访问者的ID String visitor = null; //存放访问者的ID BaseAdapter ba = new BaseAdapter() { @Override public View getView(int position, View convertView, ViewGroup parent) { TextView tv = new TextView(); tSize(20.5f); //设置字体大小 vity(); t((position)[1]); //设置TextView显示的内容 tAppearance(, ); return tv; } @Override public long getItemId(int position) { return 0; } @Override 40 }; public Object getItem(int position) { } @Override public int getCount() { } return (); return null; Handler myHandler = new Handler(){ }; @Override protected void onCreate(Bundle savedInstanceState) { te(savedInstanceState); Intent intent = getIntent(); uno = ingExtra("uno"); visitor = ingExtra("visitor"); setContentView(_list); //设置当前屏幕 //获得ListView对象 @Override public void handleMessage(Message msg) { } switch(){ case 0: } Message(msg); pter(ba); break; lvAlbumList = (ListView)findViewById(mList); temClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView> parent, View v, int position, long id) { Intent intent = new Intent(,); //创建Intent对象 ra("uno", uno); ra("visitor", visitor); ra("albumlist", albumArray); 41 } }); } ra("xid", (position)[0]); ra("position", position); ra("from", 1); startActivity(intent); finish(); getAlbumListByAccess(); public void getAlbumListByAccess(){ new Thread(){ public void run(){ e(); try{ if(mc == null){ } TF("<#GET_ALBUM_LIST_BY_ACCESS#>"+uno+"|"+visitor); String reply = F(); n("-------getAlbumByAccess reply is:"+reply); if(("<#NO_ALBUM#>")){ //该用户无相册 mc = new MyConnector(SERVER_ADDRESS, SERVER_PORT); xt(, "该用户还没有上传过照片", _LONG).show(); } albumArray = ("$"); albumList = new ArrayList for(String s:albumArray){ } ptyMessage(0); //解析每个相册的信息 //切割字符串 (); String [] sa = ("|"); (sa); }catch(Exception e){ } 42 tackTrace(); er().quit(); } }.start(); } @Override protected void onDestroy() { if(mc != null){ (); mc = null; } roy(); } } (7)CommentActivity .java package ; import static _ADDRESS; import static _PORT; import ist; import ; import ty; import ; import ; import y; import ; import oup; import apter; import ; import xt; import Layout; import ew; 43 import ew; import ; public class CommentActivity extends Activity{ MyConnector mc = null; String visitor = null; //访问者ID String uno = null; //被访者ID String rid = null; //日记的ID List BaseAdapter baListView = new BaseAdapter(){ @Override public int getCount() { return (); } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { LinearLayout ll = new LinearLayout(); entation(AL); TextView tvName = new TextView(); vity(); tAppearance(, ); String [] cmt = (position); //获得指定的评论信息 t(cmt[1]+"-于"+cmt[3]+"说:"); TextView tvContent = new TextView(); tAppearance(, t); t(cmt[2]); //设置评论内容 w(tvName); 44 w(tvContent); return ll; } }; @Override protected void onCreate(Bundle savedInstanceState) { te(savedInstanceState); Intent intent = getIntent(); visitor = ingExtra("visitor"); uno = ingExtra("uno"); rid = ingExtra("rid"); initComments(); setContentView(t); ListView lvComment = (ListView)findViewById(nt); pter(baListView); Button btnComment = (Button)findViewById(ment); lickListener(new kListener() { @Override public void onClick(View v) { EditText etComment = (EditText)findViewById(ntContent); String content = tableText().toString().trim(); //获得品论内容 if(("")){ //未输入评论内容 xt(, "请输入评论_LONG).show(); return; } if(visitor == null){ makeNewComment(content,rid,uno); } else if(visitor != null){ makeNewComment(content,rid,visitor); } initComments(); DataSetChanged(); } 容", 45 内 }); Button btnCommentBack = (Button)findViewById(mentBack); //获得返回按钮对象 lickListener(new kListener() { @Override public void onClick(View v) { finish(); } }); } //方法:获取评论列表 public void initComments(){ cmtList = new ArrayList if(mc == null){ mc = new MyConnector(SERVER_ADDRESS, SERVER_PORT); } try{ TF("<#GET_COMMENT#>"+rid); //发出获取评论请求 int size = t(); //获取评论的个数 n("the number of comment is :"+size); TF("<#READY_TO_READ_COMMENT#>"); for(int i=0;i String msg = F(); //读取每条评论信息 String [] sa = ("|"); //切割字符串 (sa); } } catch(Exception e){ tackTrace(); } } //方法:发表新评论 public void makeNewComment(String content,String rid,String uno){ try{ if(mc == null){ mc = new MyConnector(SERVER_ADDRESS, SERVER_PORT); 46 } TF("<#NEW_COMMENT#>"+content+"|"+rid+"|"+uno); String reply = F(); //读取回复 //解析回复 if(("<#NEW_COMMENT_SUCESS#>")){ } else{ xt(, "评论添加成功!", _LONG).show(); xt(, "评论添加失败!", _LONG).show(); } } catch(Exception e){ tackTrace(); } } @Override protected void onDestroy() { if(mc != null){ (); mc = null; } roy(); } } (8) ContactsActivity .java package ; import static ntUtil.*; import ist; 47
版权声明:本文标题:Android课程设计报告模板 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1702911788a435679.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论