简单校园二手交易APP

匿名 (未验证) 提交于 2019-12-02 23:04:42

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

注:因为开始我们是分开各自先写自己那一部分,但在整合时是整合在一个人的电脑上,由一个人上传完整能运行的代码,各个功能模块就是按上面的分工来进行的。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!