实现功能:
1:先将数据添加到数据库中(SQLite)
2: 使用RecyclerView将数据库中的数据展示出来
//备注:带加号的ImageButton用于添加数据,带勾的ImageButton用于获取数据并展示
//先按带加号的在按带勾的
第一步建立一个实体类Event
代码如下:
public class Event {
private String Title;
private String Time;
private double Money;
public Event(){

}public Event(String Title, String Time, double Money){    this.Title = Title;    this.Time = Time;    this.Money = Money;}public String getTitle() {    return Title;}public String getTime() {    return Time;}public double getMoney() {    return Money;}public void setTitle(String Title) {    this.Title = Title;}public void setTime(String Time) {    this.Time = Time;}public void setMoney(double Money) {    this.Money = Money;}

}
第二步建立一个MyHelper类用于继承SQLiteOpenHelper类
代码如下:
public class MyHelper extends SQLiteOpenHelper {
public static final String DataBaseName = “Bookkeeping.db”;
public static final SQLiteDatabase.CursorFactory factory = null;
public static final int version = 1;

public static final String Title = "Title";public static final String Time = "Time";public static final String Money = "Money";public static final String TableName = "BookkeepingTable";public MyHelper(@Nullable Context context) {    super(context, DataBaseName, factory, version);}@Overridepublic void onCreate(SQLiteDatabase db) {    String sql = "create table "+ TableName +" ( "+Title+" varchar(20) primary key, "+Time+" varchar(20), "+Money+" Double);";

// String sql = “create table BookkeepingTable (”
// + "Title text primary key, "
// + "Time text, "
// + “Money double)”;
db.execSQL(sql);
}

@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {    db.execSQL("drop table if exists "+TableName);    onCreate(db);}

}
第三步:建立Dao类用于实现插入功能
代码如下:
public class Dao {
public static final String TAG = “Bookkeeping”;
private SQLiteDatabase DB;
private MyHelper helper;
public Dao(Context context){
helper = new MyHelper(context);
}
public void Insert(Event event){
DB = helper.getReadableDatabase();
if (DB.isOpen())
{
ContentValues values = new ContentValues();
values.put(MyHelper.Title,event.getTitle());
values.put(MyHelper.Time,event.getTime());
values.put(MyHelper.Money,event.getMoney());
long RowId = DB.insert(MyHelper.TableName,null,values);
if(RowId == -1)
Log.i(TAG, “数据插入失败!”);
else
Log.i(TAG, “数据插入成功!”+RowId);
DB.close();
}

}

}
第四步:建立一个recyclerview_item.xml用于与Recyclerview适配器匹配
效果图如下:

代码如下:

<?xml version="1.0" encoding="utf-8"?>




第五步:创建一个MyRecyclerView类用于继承RecyclerView.Adapter适配器 代码如下: public class MyRecyclerView extends RecyclerView.Adapter

}
第六步:建立一个AddThing活动用于获取输入的数据和插入数据库中
AddThing.java代码如下:
public class AddThing extends AppCompatActivity implements DatePicker.OnDateChangedListener{
private RadioGroup Group;
private RadioButton Pay,InCome;
private DatePicker datePicker;
private TextView TipsTitle,TipsTime,TipsMoney,TipsMoneyType;
private EditText editTitle,editTime,editMoney;
private Button btn_Submit;
public static int MoneyType = 0;
public static String DatePickerTime = null;
public static String Title = null;
public static String Time = null;
public static double Money = 0;
Dao dao = null;
Event event = null;

@Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_add_thing);    btn_Submit = (Button) findViewById(R.id.submit);    datePicker = (DatePicker) findViewById(R.id.addThing);    Group = (RadioGroup) findViewById(R.id.Group);    Pay = (RadioButton) findViewById(R.id.Pay);    InCome = (RadioButton) findViewById(R.id.InCome);    TipsMoneyType = (TextView) findViewById(R.id.TipsMoneyType);    TipsTitle = (TextView) findViewById(R.id.TipsTitle);    TipsTime = (TextView) findViewById(R.id.TipsTime);    TipsMoney = (TextView) findViewById(R.id.TipsMoney);    editTitle = (EditText) findViewById(R.id.editTitle);    editTime = (EditText) findViewById(R.id.editTime);    editMoney = (EditText) findViewById(R.id.editMoney);    Calendar calendar = Calendar.getInstance();    int year = calendar.get(Calendar.YEAR);    int monthOfYear = calendar.get(Calendar.MONTH);    int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH);    datePicker.init(year, monthOfYear, dayOfMonth, this);    Group.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {        @Override        public void onCheckedChanged(RadioGroup group, int checkedId) {            RadioButton radioButton = (RadioButton) group.findViewById(checkedId);            if (radioButton.getText().equals("支付")) {                MoneyType = 1;            } else {                MoneyType = 0;            }        }    });    btn_Submit.setOnClickListener(new View.OnClickListener() {        @Override        public void onClick(View v) {            dao = new Dao(AddThing.this);//创建数据库和表            Title = editTitle.getText().toString().trim();            Time = editTime.getText().toString();            try {                Money = Double.valueOf(editMoney.getText().toString());            } catch (NumberFormatException e) {                e.printStackTrace();            }            if ("".equals(Title))            {                Toast.makeText(AddThing.this,"不能为空",Toast.LENGTH_SHORT).show();                return;            }            dao.Insert(new Event(Title,Time,Money));            Log.d(Dao.TAG,"succees!");        }    });}@Overridepublic void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) {    editTime.setText(year + "-"+ monthOfYear+ "-"+ dayOfMonth+ "");}

}
activity_add_thing.xml文件如下:
效果图如下:

//备注:RadioGroup暂未使用,到后面可以统计一个月或者更长时间的的收入或者花费的金额
代码如下:

<?xml version="1.0" encoding="utf-8"?>



        
第七步:接收来自数据库中的数据并使用RecyclerView控件展示 MainActivity.java中的代码如下: public class MainActivity extends AppCompatActivity { private RecyclerView Recyclerview; private ImageButton imageButton,imageButtonGet; private MyRecyclerView adapter; private List EventList = new ArrayList<>();
@Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    Recyclerview = (RecyclerView) findViewById(R.id.EventDisplayInterface);    imageButton = (ImageButton) findViewById(R.id.AddButton);    imageButtonGet = (ImageButton) findViewById(R.id.getInformation);    //绑定适配器    LinearLayoutManager manager = new LinearLayoutManager(MainActivity.this);    Recyclerview.setLayoutManager(manager);    adapter = new MyRecyclerView(EventList);    Recyclerview.setAdapter(adapter);    imageButton.setOnClickListener(new View.OnClickListener() {        @Override        public void onClick(View v) {            Intent intent = new Intent(MainActivity.this,AddThing.class);            startActivity(intent);        }    });    imageButtonGet.setOnClickListener(new View.OnClickListener() {       Event event = new Event();        @Override        public void onClick(View v) {            String Title = AddThing.Title;            String Time = AddThing.Time;            double Money = AddThing.Money;            if ( ("".equals(Title)) && ( "".equals(Time)))            {                Toast.makeText(MainActivity.this,"内容不能为空",Toast.LENGTH_SHORT).show();            }            else {                event = new Event(Title, Time, Money);                EventList.add(event);                adapter.notifyItemChanged(EventList.size() - 1);                Recyclerview.scrollToPosition(EventList.size() - 1);                Toast.makeText(MainActivity.this,"111111111",Toast.LENGTH_SHORT).show();            }        }    });}

}
activity_main.xml文件如下:
效果图如下:

//备注:带加号的ImageButton用于添加数据,带勾的ImageButton用于获取数据并展示
//先按带加号的在按带勾的
代码如下:

<?xml version="1.0" encoding="utf-8"?>


android:id="@+id/EventDisplayInterface"
android:layout_width=“match_parent”
android:layout_height=“wrap_content”/>


/所以代码到这里已经完结,以下为AVD运行效果图***************/

更多相关文章

  1. mybatisplus的坑 insert标签insert into select无参数问题的解决
  2. python起点网月票榜字体反爬案例
  3. android之ContentResolver与ContentProvider
  4. Android(安卓)内核源代码交叉编译(创建自己的模拟器内核,哈哈终于
  5. 《Android/OPhone 开发完全讲义》已出版,现提供源代码下载
  6. #Android源代码#android:onClick属性的底层调用
  7. Android应用程序的Java数据更新和UI同步改变
  8. Android
  9. android TextView添加滚动条

随机推荐

  1. Android(安卓)Bluetooth HID实现详解
  2. 以用户的角度给 Android(安卓)开发者的一
  3. Vitamio 随笔分类
  4. Android 字体自适应设置
  5. Android ViewGroup中有关测量的方法
  6. TextView 限制最大行数、最小行数、字数
  7. Android 对话框(Dialog)大全
  8. 管理Android通信录
  9. Android Activity的启动过程(API27 源码分
  10. cocos2d-x 1.0.1 for Android 使用Box2D