大二寒假作业之账本开发
今日完成了账本开发的添加账目的功能,需要输入标题,金额,日期,在选支出或是收入,然后点击保存就可以储存。
长按日期的EditText组件可以显示日期选择对话框。保存时会进行数据检查以及保存从操作。下面伪代码:
<?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:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:gravity="right"> <Button android:id="@+id/btnAddSave" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="保存" android:textAllCaps="false"> </Button> </LinearLayout> <LinearLayout android:id="@+id/layoutAddForm" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="标题" android:layout_marginTop="25dp"> </TextView> <EditText android:id="@+id/txtAddAcctTitle" android:layout_width="match_parent" android:layout_height="wrap_content"> </EditText> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="金额" android:layout_marginTop="25dp"> </TextView> <EditText android:id="@+id/txtAddAcctAmount" android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="numberDecimal"> </EditText> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="日期" android:layout_marginTop="25dp"> </TextView> <EditText android:id="@+id/txtAddAcctDate" android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="date"> </EditText> <RadioGroup android:id="@+id/rgAddAcctType" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_marginTop="25dp"> <RadioButton android:id="@+id/rdoAddAcctExpenditure" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="支出" android:checked="true"> </RadioButton> <RadioButton android:id="@+id/rdoAddAcctIncome" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="收入"> </RadioButton> </RadioGroup> </LinearLayout> </LinearLayout>
public class AddActivity extends AppCompatActivity implements View.OnClickListener, View.OnLongClickListener, DatePickerDialog.OnDateSetListener { private EditText txtTitle; private EditText txtAmount; private EditText txtDate; private RadioButton rdoExpenditure; private RadioButton rdoIncome; private Button btnSave; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.add_layout); setTitle("新账目"); txtTitle =(EditText)findViewById(R.id.txtAddAcctTitle); txtAmount=(EditText)findViewById(R.id.txtAddAcctAmount); txtDate=(EditText)findViewById(R.id.txtAddAcctDate); txtDate.setOnLongClickListener(this); rdoExpenditure=(RadioButton)findViewById(R.id.rdoAddAcctExpenditure); rdoIncome=(RadioButton)findViewById(R.id.rdoAddAcctIncome); CDateTime dt=new CDateTime(); txtDate.setText(dt.toDateString()); btnSave=(Button)findViewById(R.id.btnAddSave); btnSave.setOnClickListener(this); } //长按EditText组件时会显示日期选择对话框 @Override public boolean onLongClick(View v) { if(v.getId()==R.id.txtAddAcctDate){ CDateTime dt=new CDateTime(); DatePickerDialog dlg=new DatePickerDialog(this,this,dt.year(),dt.month(),dt.day()); //此用于显示一个时间选择 dlg.show(); } return false; } @Override public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) { txtDate.setText(String.format("%d-%d-%d",year,month,dayOfMonth)); } // //单击保存时会执行数据检查以及保存操作 @Override public void onClick(View v) { if(v.getId()==R.id.btnAddSave){ String title=txtTitle.getText().toString().trim(); if(title.equals("")){ Toast.makeText(this,"标题为空",Toast.LENGTH_LONG).show(); return; } double amount=CC.toDbl(txtAmount.getText().toString()); if(amount<=0){ Toast.makeText(this,"金额小于0",Toast.LENGTH_LONG).show(); return; } long type=(rdoExpenditure.isChecked()?1:2); if(CDateTime.checkDateString(txtDate.getText().toString(),"-")==false){ Toast.makeText(this,"日期格式不正确",Toast.LENGTH_LONG).show(); return; } CDateTime dt=new CDateTime(txtDate.getText().toString(),"-"); //保存 CAccount acct=CAccount.getInstance(this,1); long result=acct.insert(title,amount,type,dt); if(result>0){ Toast.makeText(this,"保存成功",Toast.LENGTH_LONG).show(); txtTitle.setText(""); }else{ Toast.makeText(this,"保存失败",Toast.LENGTH_LONG).show(); } } } }