1、项目团队
团队成员:
姓名:汤文涛 学号:1600802129 班级:计算机164班 博客地址:https://www.cnblogs.com/taotao01/
姓名:杨圣豪 学号:1600802101 班级:计算机163班 博客地址:http://www.cnblogs.com/ysh1998/
姓名:黄东强 学号:1600802083 班级:计算机163班 博客地址:http://www.cnblogs.com/hdq163/
2、APK链接:
3、代码链接:
4、团队项目介绍
4.1项目总体效果截图:









4.2实现的功能及其效果描述:
5、关键代码
usersave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {//账号userId,密码passWord,姓名name,专业subject,电话phone,QQ号qq,地址address
post_name=username.getText().toString();
post_subject=usersubject.getText().toString();
post_phone=userphone.getText().toString();
post_qq=userqq.getText().toString();
post_address=useraddress.getText().toString();
ContentValues values=new ContentValues();
values.put("name",post_name);
values.put("subject",post_subject);
values.put("phone",post_phone);
values.put("qq",post_qq);
values.put("address",post_address);
saveValues(values);
Toast.makeText(getApplicationContext(), "修改成功", Toast.LENGTH_SHORT).show();
startActivity(intent);
}
});
5.2过滤器(验证是否登录)
myshow.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(a.equals("")||a==null){
Toast.makeText(getApplicationContext(), "请先登录!", Toast.LENGTH_SHORT).show();
intent = new Intent(MyselfActivity.this,LoginMainActivity.class);
startActivity(intent);
}
intent = new Intent(MyselfActivity.this,MyselfActivity.class);
startActivity(intent);
}
});
5.3登录获取用户ID,设置为全局变量
protected static String post_userid;
5.4上传商品信息插入到数据库
Button fabu=(Button)findViewById(R.id.fabu); fabu.setOnClickListener(new View.OnClickListener() { @RequiresApi(api = Build.VERSION_CODES.O) @Override public void onClick(View v) { EditText title=(EditText)findViewById(R.id.m1_title); Spinner style=(Spinner)findViewById(R.id.m1_style); EditText price=(EditText)findViewById(R.id.m1_price); EditText phone=(EditText)findViewById(R.id.m1_phone); EditText nr=(EditText)findViewById(R.id.m1_nr); Date curDate = new Date(System.currentTimeMillis()); String str = formatter.format(curDate); SQLiteDatabase db=dbHelper.getWritableDatabase(); ContentValues values=new ContentValues(); values.put("Id",25); values.put("title",title.getText().toString());// values.put("style", style.getTooltipText().toString()); values.put("style", str); values.put("time",str.toString()); values.put("price",price.getText().toString()); values.put("phone",phone.getText().toString()); values.put("nr",nr.getText().toString());// Log.i("哈哈哈",values.getAsString("title")); db.insert("Sc_message",null,values); Intent intent=new Intent(MainActivity_m1.this,MainActivity.class); startActivity(intent); } });5.5把上传数据库中的信息显示在我的发布列表中 MyDatabaseHelper mydb = new MyDatabaseHelper(this,"1600802129.db",null,1);final SQLiteDatabase ddb = mydb.getWritableDatabase();ListView listView = (ListView)findViewById(R.id.show_fabu);Map<String, Object> item;List<Map<String, Object>> data = new ArrayList<Map<String, Object>>();Cursor cursor = db.query("Sc_message",null,null,null,null,null,null,null);if (cursor.moveToFirst()){ while (!cursor.isAfterLast()){ item = new HashMap<String, Object>(); item.put("id",cursor.getInt(0)); item.put("title",cursor.getString(1)); item.put("nr",cursor.getBlob(6)); item.put("style",cursor.getBlob(2)); item.put("time",cursor.getString(3)); item.put("price",cursor.getString(4)); item.put("phone",cursor.getString(5)); cursor.moveToNext(); data.add(item); }}SimpleAdapter simpleAdapter = new SimpleAdapter(this, data, R.layout.my_fabu, new String[] { "image", "title", "price", "pl", "ly" }, new int[] { R.id.show_image, R.id.show_title, R.id.show_price, R.id.show_pl, R.id.show_view });listView.setAdapter(simpleAdapter);5.6从相册中添加照片 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>//获取SD卡权限
imageButton=findViewById(R.id.m1_image);imageButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (ContextCompat.checkSelfPermission(MainActivity_m1.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(MainActivity_m1.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1); } else { //打开系统相册 openAlbum(); } }}); private void openAlbum() { Intent intent = new Intent("android.intent.action.GET_CONTENT"); intent.setType("image/*"); startActivityForResult(intent, REQUEST_SYSTEM_PIC);//打开系统相册}@Overridepublic void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { switch (requestCode) { case 1: if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { openAlbum(); } else { Toast.makeText(this, "You denied the permission", Toast.LENGTH_SHORT).show(); } break; default: }}5.7显示商品列表 6、评选其他团队APK
7、团队成员遇到的问题及解决的方法
成员1:汤文涛
问题一:如何把上传数据库中的信息依次显示在查看发布列表里面
解决方法:通过网上查询解决办法,我先写了一个商品信息模板,在发布列表对应的Java文件中来读取数据库中的信息,用一个新的列表存储,在调用模板传参到显示页面中。
问题二:在把发布商品信息传到数据库时,Spinner中的选项无法直接获取插入到数据库
解决方法:在对应的Java文件中开头定义一个新的String对象,添加Spinner响应事件,在响应中用定义的String对象来接收选项值,再在插入数据时直接插入这个String对象。
问题三:如何上传相片
解决方法:通过添加ImageButton响应按钮,点击获取SD卡权限从手机自带的图库中添加照片(但是只能添加一张),然后在点击发布按钮的响应中用BLOB类型插入到数据库中。
成员2:杨圣豪
问题一
图文列表显示,使用SimpleAdapter函数,为listview设置一个模板布局xml文件,代表listview中每个列表项的布局样式,使用Map储存列表项中各个属性,将多个Map储存在List中,最后调用SimpleAdapter函数布局各个列表项
问题二
实现底部导航栏置底,因为linerlayout布局是垂直依次排列的,导航栏作为最后一个组件默认是不会置底的,所以需要设置底部导航栏和导航栏上方的组件高度为0,通过设置两个组件的权重来控制导航栏置底。
问题三
点击相应列表项,跳到指定内容的页面,因为每个列表项都是Map类型的对象,获取其键为"id"的值,通过Bundle传值给跳转到的页面,在页面中根据id进行数据库查询,查到该id对应的商品信息,显示在页面中
成员3:黄东强
问题一:程序页面Intent进行跳转时会程序无法运行
解决方法:意外终止,多次调试,发现结果为,未在Mainfest.xml中配置Activity
解决方法:先验证全局变量用户Id是否为空,若为空则弹出用户未登录,跳转至登录页面
问题三:如何登录后获取用户ID
解决方法:设置为全局变量,使各个Activity都能访问到它。百度上的设置全局变量有2中方式,一种是新建Application类来存放userId,一种是新建java类来存放userId,按其方法,会导致userId为空时,程序意外终止无法进行。最后设置一个静态全局变量static userid来存放数据,其他Activity可以正常访问并修改。
8、项目成员分工及打分
| 姓名 | 分工 | 工作比例 | 分数(10分) |
|---|---|---|---|
| 汤文涛 | 上传、我的发布、留言的页面设计及功能实现 | 33% | 10 |
| 杨圣豪 | 商品信息、主页、商品分类的页面设计及功能实现 | 34% | 10 |
| 黄东强 | 登录、注册、个人中心的页面设计及功能实现 | 33% | 10 |