大二寒假作业之账本开发

今日完成了账本开发的添加账目的功能,需要输入标题,金额,日期,在选支出或是收入,然后点击保存就可以储存。

长按日期的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();
            }
        }
    }


}
原文地址:https://www.cnblogs.com/fengchuiguobanxia/p/14413763.html