安卓学习日记——Bmob
Bmob的使用详见官网:www.bmob.cn
- 增删改查
public void addClick(View v){
Person p=new Person();
p.setName("科少");
p.setAddress("温州");
p.save(new SaveListener<String>() {
@Override
public void done(String s, BmobException e) {
if(e==null){
Toast.makeText(MainActivity.this,"添加数据成功,返回objectId为:"+s,Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(MainActivity.this,"创建数据失败",Toast.LENGTH_SHORT).show();
}
}
});
}
public void delClick(View v){
Person p=new Person();
p.setObjectId("43f3b7b1dc");
p.delete(new UpdateListener() {
@Override
public void done(BmobException e) {
if(e==null){
Toast.makeText(MainActivity.this,"删除成功",Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(MainActivity.this,"删除失败",Toast.LENGTH_SHORT).show();
}
}
});
}
public void updateClick(View v){
Person p2 = new Person();
p2.setAddress("温州苍南");
p2.update("43f3b7b1dc", new UpdateListener() {
@Override
public void done(BmobException e) {
if(e==null){
Toast.makeText(MainActivity.this,"更新成功",Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(MainActivity.this,"更新失败",Toast.LENGTH_SHORT).show();
}
}
});
}
public void queryClick(View v){
final BmobQuery<Person> bmobQuery = new BmobQuery<Person>();
bmobQuery.getObject("43f3b7b1dc", new QueryListener<Person>() {
@Override
public void done(Person object,BmobException e) {
if(e==null){
Toast.makeText(MainActivity.this,"查询成功",Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(MainActivity.this,"查询失败",Toast.LENGTH_SHORT).show();
}
}
});
}
这里删改查都是用的精准的ID,方便作为一个例子。
初始化Bmob
Bmob.initialize(this,"e84d1c4d2809baaa6b9f9674328d2b0e");
用户注册
private void signUp(final View view) {
final User user = new User();
user.setUsername("" + System.currentTimeMillis());
user.setPassword("" + System.currentTimeMillis());
user.setAge(18);
user.setGender(0);
user.signUp(new SaveListener<User>() {
@Override
public void done(User user, BmobException e) {
if (e == null) {
Snackbar.make(view, "注册成功", Snackbar.LENGTH_LONG).show();
} else {
Snackbar.make(view, "尚未失败:" + e.getMessage(), Snackbar.LENGTH_LONG).show();
}
}
});
}
用户密码登录
private void login(final View view) {
final User user = new User();
//此处替换为你的用户名
user.setUsername("username");
//此处替换为你的密码
user.setPassword("password");
user.login(new SaveListener<User>() {
@Override
public void done(User bmobUser, BmobException e) {
if (e == null) {
User user = BmobUser.getCurrentUser(User.class);
Snackbar.make(view, "登录成功:" + user.getUsername(), Snackbar.LENGTH_LONG).show();
} else {
Snackbar.make(view, "登录失败:" + e.getMessage(), Snackbar.LENGTH_LONG).show();
}
}
});
}
效果
- 便签功能
- 点击添加
输入内容,点击返回
点击对应的内容可以进行修改
长按删除
代码块
Note
import cn.bmob.v3.Bmob;
import cn.bmob.v3.BmobObject;
public class Note extends BmobObject {
private String content;
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
}
NoteDetailActivity
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.KeyEvent;
import android.widget.EditText;
import cn.bmob.v3.exception.BmobException;
import cn.bmob.v3.listener.UpdateListener;
public class NoteDetailActivity extends AppCompatActivity {
private EditText editText_content;
private String objectid;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_note_detail);
editText_content=findViewById(R.id.editText5_content);
objectid=getIntent().getStringExtra("objectid");
editText_content.setText(getIntent().getStringExtra("content"));
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode==KeyEvent.KEYCODE_BACK){
String content=editText_content.getText().toString();
if (!TextUtils.isEmpty(content)){
Note note=new Note();
note.setContent(content);
note.update(objectid, new UpdateListener() {
@Override
public void done(BmobException e) {
}
});
}
}
return super.onKeyDown(keyCode, event);
}
}
NoteNewActivity
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.KeyEvent;
import android.widget.EditText;
import cn.bmob.v3.exception.BmobException;
import cn.bmob.v3.listener.SaveListener;
import cn.bmob.v3.listener.UpdateListener;
public class NoteNewActivity extends AppCompatActivity {
private EditText editText_content;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_note_new);
editText_content=findViewById(R.id.editText5);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode==KeyEvent.KEYCODE_BACK){
String content=editText_content.getText().toString();
if (!TextUtils.isEmpty(content)){
Note note=new Note();
note.setContent(content);
note.save(new SaveListener<String>() {
@Override
public void done(String s, BmobException e) {
}
});
}
}
return super.onKeyDown(keyCode, event);
}
}
NoteListActivity
import android.content.Context;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
import cn.bmob.v3.Bmob;
import cn.bmob.v3.BmobObject;
import cn.bmob.v3.BmobQuery;
import cn.bmob.v3.exception.BmobException;
import cn.bmob.v3.listener.DeleteBatchListener;
import cn.bmob.v3.listener.FindListener;
import cn.bmob.v3.listener.UpdateListener;
public class NoteListActivity extends AppCompatActivity {
private static final int DEL_ITEM =0x1 ;
private ArrayList<Note> notes=new ArrayList<>();
private ListView listView;
NoteAdapter na;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_note_list);
Bmob.initialize(this,"e84d1c4d2809baaa6b9f9674328d2b0e");
listView=findViewById(R.id.listView_note);
// ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,android.R.id.text1,notes);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
TextView textView_content= view.findViewById(R.id.textView5_content);
String content=textView_content.getText().toString();
String objectid= (String) view.getTag();
Intent intent=new Intent(NoteListActivity.this,NoteDetailActivity.class);
intent.putExtra("content",content);
intent.putExtra("obectid",objectid);
startActivity(intent);
}
});
registerForContextMenu(listView);
}
@Override
protected void onResume() {
super.onResume();
loadData();
}
private void loadData() {
BmobQuery<Note> query=new BmobQuery<>();
query.setLimit(50);//限定查询条数
query.findObjects(new FindListener<Note>() {
@Override
public void done(List<Note> list, BmobException e) {
if (e==null){
notes= (ArrayList<Note>) list;
na=new NoteAdapter(NoteListActivity.this,notes);
listView.setAdapter(na);
}
}
});
}
static class NoteAdapter extends BaseAdapter{
private Context context;
private List<Note> list;
public NoteAdapter(Context context,List<Note> list){
this.context=context;
this.list=list;
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView==null){
convertView= LayoutInflater.from(context).inflate(R.layout.layout_note_item,null);
}
Note note=list.get(position);
TextView content=convertView.findViewById(R.id.textView5_content);
content.setText(note.getContent());
convertView.setTag(note.getObjectId());
return convertView;
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_note_list,menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()){
case R.id.add_note:
Intent intent=new Intent(this,NoteNewActivity.class);
startActivity(intent);
break;
}
return true;
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
menu.add(1,DEL_ITEM,100,"删除");
}
@Override
public boolean onContextItemSelected(MenuItem item) {
switch (item.getItemId()){
case DEL_ITEM:
AdapterView.AdapterContextMenuInfo info= (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
View view= info.targetView;
String objectid= (String) view.getTag();
Note note=new Note();
note.setObjectId(objectid);
note.delete(new UpdateListener() {
@Override
public void done(BmobException e) {
if (e==null){
loadData();
}
}
});
break;
}
return super.onContextItemSelected(item);
}
}
activity_note_detail
<?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:layout_marginTop="16dp"
android:layout_marginLeft="16dp"
android:layout_marginBottom="16dp"
android:layout_marginRight="16dp"
tools:context=".NoteDetailActivity"
>
<EditText
android:id="@+id/editText5_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_marginStart="0dp"
android:layout_marginTop="0dp"
/>
</RelativeLayout>
activity_note_list
<?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"
tools:context=".NoteListActivity"
android:layout_marginTop="16dp"
android:layout_marginLeft="16dp"
android:layout_marginBottom="16dp"
android:layout_marginRight="16dp">
<ListView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/listView_note"
></ListView>
</RelativeLayout>
activity_note_new
<?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"
tools:context=".NoteNewActivity"
android:layout_marginTop="16dp"
android:layout_marginLeft="16dp"
android:layout_marginBottom="16dp"
android:layout_marginRight="16dp">
<EditText
android:id="@+id/editText5"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_marginStart="0dp"
android:layout_marginTop="0dp"
/>
</RelativeLayout>
layout_note_item
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="16dp"
android:layout_marginLeft="16dp"
android:layout_marginBottom="16dp"
android:layout_marginRight="16dp">
<TextView
android:id="@+id/textView5_content"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</LinearLayout>
menu_note_list
<?xml version="1.0" encoding="utf-8"?>
<menu 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"
tools:context="com.example.bmob1.NoteListActivity"
>
<item android:id="@+id/add_note" android:title="添加"
android:orderInCategory="100" app:showAsAction="always"/>
</menu>