关键字:校园APP,失物招领
利用Bmob更新APP:https://blog.csdn.net/qq_36332133/article/details/82143926
Bmob的配置就不多说了
效果图:
在Bmob后台创建SWZL表:
CONTENT是内容,adress是地址,title是标题,time是时间
createTime是发布的系统时间
SWZL.JAVA
import cn.bmob.v3.BmobObject;
public class SWZL extends BmobObject {
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
private String title;//标题
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
private String content;//内容
public String getTime() {
return time;
}
public void setTime(String time) {
this.time = time;
}
private String time;
public String getAdress() {
return adress;
}
public void setAdress(String adress) {
this.adress = adress;
}
private String adress;
}
发布信息:
package com.example.luhongcheng;
import android.annotation.TargetApi;
import android.app.Activity;
import android.content.ContentUris;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.provider.DocumentsContract;
import android.provider.MediaStore;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Toast;
import com.example.luhongcheng.Bmob.SWZL;
import java.io.File;
import cn.bmob.v3.Bmob;
import cn.bmob.v3.datatype.BmobFile;
import cn.bmob.v3.exception.BmobException;
import cn.bmob.v3.listener.SaveListener;
import cn.bmob.v3.listener.UploadFileListener;
public class send extends Activity {
EditText title,content,time,adress;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.send);
Bmob.initialize(this, "69d2a14bfc11//你的APP key");
title = (EditText) findViewById(R.id.title);
content = (EditText) findViewById(R.id.content);
time = (EditText) findViewById(R.id.time);
adress = (EditText) findViewById(R.id.adress);
}
public void post (View view){
String mtitle = title.getText().toString();
String mcontent = content.getText().toString();
String mtime = time.getText().toString();
String madress = adress.getText().toString();
if (mtitle == null){
Toast.makeText(send.this,"请填写完整信息", Toast.LENGTH_SHORT).show();
} else{
SWZL p2= new SWZL();
p2.setTitle(mtitle);
p2.setContent(mcontent);
p2.setTime(mtime);
p2.setAdress(madress);
p2.save(new SaveListener<String>() {
@Override
public void done(String objectId, BmobException e) {
if(e==null){
Toast.makeText(send.this,"添加数据成功,返回objectId为:"+objectId,Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(send.this,"创建数据失败:" + e.getMessage(),Toast.LENGTH_SHORT).show();
}
}
});
}
}
}
利用listview显示信息,查询信息的代码:
由于我是在fragment里面写的,和activity略有不同
package com.example.luhongcheng;
import android.annotation.SuppressLint;
import android.app.Fragment;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import com.example.luhongcheng.Bmob.SWZL;
import java.util.ArrayList;
import java.util.List;
import cn.bmob.v3.Bmob;
import cn.bmob.v3.BmobQuery;
import cn.bmob.v3.exception.BmobException;
import cn.bmob.v3.listener.FindListener;
@SuppressLint("ValidFragment")
public class ThreeFragment extends Fragment {
private String context;
public ThreeFragment(String context){
this.context = context;
}
ListView listView;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.c_fragment,container,false);
return view;
}
@Override
public void onActivityCreated( Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
listView = (ListView) getActivity().findViewById(R.id.listView);
Bmob.initialize(getActivity(), "69d2a14bfc11//APP key");
get();
Button send = (Button) getActivity().findViewById(R.id.bt1);
send.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent1=new Intent(getActivity(),send.class);
startActivity(intent1);
}
});
Button get = (Button) getActivity().findViewById(R.id.bt2);
get.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
get();
}
});
}
public void get(){
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
BmobQuery<SWZL> query = new BmobQuery<SWZL>();
query.findObjects(new FindListener<SWZL>(){
@Override
public void done(List<SWZL> list, BmobException e) {
List<SWZL> lists = new ArrayList<>();
if (list != null) {
//System.out.println("查询成功"+list.get(0).getTitle()+list.get(0).getContent()+list.get(0).getTime()+list.get(0).getAdress()+list.get(0).getIconUrl());
final String[] title = new String[list.size()];
final String[] content = new String[list.size()];
final String[] time = new String[list.size()];
final String[] adress = new String[list.size()];
for(int i = 0;i<list.size();i++){
title[i] = list.get(i).getTitle();
content[i] = list.get(i).getContent();
time[i] = list.get(i).getTime();
adress[i] = list.get(i).getAdress();
}
class MyAdapter extends BaseAdapter {
private Context context ;
public MyAdapter(Context context){
this.context = context;
}
@Override
public int getCount() {
return title.length;
}
@Override
public Object getItem(int position) {
return title[position];
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
if (convertView == null){
LayoutInflater inflater = LayoutInflater.from(context);
convertView = inflater.inflate(R.layout.swzl_item_layout, null);//实例化一个布局文件
viewHolder = new ViewHolder();
viewHolder.tv_title = (TextView)convertView.findViewById(R.id.tv_title);
viewHolder.tv_content = (TextView)convertView.findViewById(R.id.tv_content);
viewHolder.tv_time = (TextView)convertView.findViewById(R.id.tv_time);
viewHolder.tv_adress = (TextView)convertView.findViewById(R.id.tv_adress);
convertView.setTag(viewHolder);
}else {
viewHolder = (ViewHolder) convertView.getTag();
}
viewHolder.tv_title.setText(title[position]);
viewHolder.tv_content.setText(content[position]);
viewHolder.tv_time.setText(time[position]);
viewHolder.tv_adress.setText(adress[position]);
return convertView;
}
class ViewHolder{
TextView tv_title;
TextView tv_content;
TextView tv_time;
TextView tv_adress;
}
}
listView.setAdapter(new MyAdapter(getActivity()));
}
}
});
}
}); //声明一个子线程
thread.start();
}
}
布局:main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".item9"
tools:layout_editor_absoluteY="25dp">
<LinearLayout
android:id="@+id/top_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/red_300"
android:gravity="center"
android:minHeight="45dp"
android:orientation="horizontal">
<TextView
android:id="@+id/top_sign"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="12dp"
android:clickable="true"
android:text="失物招领信息"
android:textColor="@android:color/white"
android:textSize="15dp"
android:textStyle="bold" />
</LinearLayout>
<ListView
android:layout_below="@+id/top_title"
android:id="@+id/listView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:divider="#ffffff"
android:dividerHeight="7sp">
</ListView>
<Button
android:id="@+id/bt1"
android:layout_alignParentRight="true"
android:layout_alignParentBottom="true"
android:layout_gravity="center"
android:text="发布信息"
android:onClick="send"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/dot_normal"
tools:ignore="OnClick" />
<Button
android:id="@+id/bt2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/bt1"
android:layout_alignParentEnd="true"
android:layout_gravity="center"
android:background="@drawable/dot_normal"
android:text="刷 新" />
</RelativeLayout>
list_item.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:id="@+id/iv"
android:layout_width="0dp"
android:layout_height="0dp"
android:src="@drawable/ic_launcher"/>
<LinearLayout
android:layout_toRightOf="@+id/iv"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/tv_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="20dp"
android:gravity="center"
android:text="标题" />
<View
android:layout_marginLeft="25dp"
android:layout_marginRight="25dp"
android:layout_width="wrap_content"
android:layout_height="0.5dp"
android:background="@android:color/black"/>
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_marginLeft="25dp"
android:layout_marginRight="25dp"
android:id="@+id/tv_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="12dp"
android:maxHeight="200dp"
android:text="内容" />
</ScrollView>
<View
android:layout_marginLeft="25dp"
android:layout_marginRight="25dp"
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:background="@android:color/black"/>
<TextView
android:layout_marginLeft="25dp"
android:layout_marginRight="25dp"
android:id="@+id/tv_time"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="12dp"
android:text="时间" />
<View
android:layout_marginLeft="25dp"
android:layout_marginRight="25dp"
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:background="@android:color/black"/>
<TextView
android:layout_marginLeft="25dp"
android:layout_marginRight="25dp"
android:id="@+id/tv_adress"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="12dp"
android:text="地点" />
<View
android:layout_marginLeft="25dp"
android:layout_marginRight="25dp"
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:background="@android:color/black"/>
</LinearLayout>
</RelativeLayout>
源码就不放了,很简单的,自己参考下就好了
这个功能还是有很多缺陷的,比如不能发布图片,发布时间也没有,大家参考就行