随手记(五)

现在介绍下关于记账界面代码: 
BillsActivity.java,主要从数据库获得数据,并通过listview显示。常按能够删除账单条目。

package com.bank;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;
import android.view.ContextMenu;
import android.view.MotionEvent;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.HashMap;
public class BillsActivity extends Activity implements View.OnClickListener {
        //列举数据的ListView
        private ListView mlistbills;
        // 适配器
        private SimpleAdapter mlistbillsAdapter;
        //数据库
        private MySQLiteHelper mMysql;
        private SQLiteDatabase mDataBase;
        private ImageView imageviewback;
        // 存储数据的数组列表
        ArrayList<HashMap<String, Object>> listData = new ArrayList<HashMap<String, Object>>();
        public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.bills);
                mlistbills = (ListView) this.findViewById(R.id.list_bills);
                imageviewback = (ImageView) this.findViewById(R.id.imageviewBack);
                imageviewback.setOnClickListener(this);
                GetData();
                mlistbillsAdapter = new SimpleAdapter(
                        this,
                        listData,
                        R.layout.billsitem,
                        new String[]{"Time", "Type", "Fee", "Remarks"},
                        new int[]{R.id.texttimeshow, R.id.imagetypeshow, R.id.textfeeshow, R.id.textremarksshow}
                );
                //赋予数据
                mlistbills.setAdapter(mlistbillsAdapter);
                //常按响应
                mlistbills.setOnCreateContextMenuListener(listviewLongPress);
                //点击事件
                mlistbills.setOnTouchListener(onTouchListener);
        }
        View.OnTouchListener onTouchListener = new View.OnTouchListener() {
                float x, y, ux, uy;
                @Override
                public boolean onTouch(View v, MotionEvent event) {
                        // TODO Auto-generated method stub
                        switch (event.getAction()) {
                                case MotionEvent.ACTION_DOWN:
                                        x = event.getX();
                                        y = event.getY();
                                        break;
                                case MotionEvent.ACTION_UP:
                                        ux = event.getX();
                                        uy = event.getY();
                                        int p2 = ((ListView)v).pointToPosition((int) ux, (int) uy);

                                        return false;
                        }
                        return false;
                }

        };

        AdapterView.OnItemLongClickListener listviewLongClick = new AdapterView.OnItemLongClickListener() {
                @Override
                public boolean onItemLongClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
                        return false;
                }
        };
                AdapterView.OnItemClickListener listviewClick = new AdapterView.OnItemClickListener() {
                        @Override
                        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                                Toast.makeText(getApplicationContext(),
                                        "weffwe", Toast.LENGTH_SHORT).show();
                        }
                };
                //从数据库获得适配器数据
                public void GetData() {
                        mMysql = new MySQLiteHelper(this, "finance.db", null, 1);
                        mDataBase = mMysql.getReadableDatabase();

                        Cursor cursor = mDataBase.rawQuery("select * from finance order by ID DESC ", null);
                        cursor.moveToFirst();
                        int columnsSize = cursor.getColumnCount();
                        int number = 0;
                        while (number < cursor.getCount()) {
                                //  cursor.move(i);
                                HashMap<String, Object> map = new HashMap<String, Object>();
                                String budget = cursor.getString(cursor.getColumnIndex("Budget"));
                                map.put("ID", cursor.getString(cursor.getColumnIndex("ID")));
                                map.put("Fee", cursor.getDouble(cursor.getColumnIndex("Fee")));
                                map.put("Time", cursor.getString(cursor.getColumnIndex("Time")));
                                if (budget.equals("收入"))
                                        map.put("Fee", "+" + cursor.getString(cursor.getColumnIndex("Fee")));
                                else
                                        map.put("Fee", "-" + cursor.getString(cursor.getColumnIndex("Fee")));
                                map.put("Remarks", cursor.getString(cursor.getColumnIndex("Remarks")));

                                if ((cursor.getString(cursor.getColumnIndex("Type"))).equals("衣")) {
                                        map.put("Type", R.drawable.cloth);
                                } else if ((cursor.getString(cursor.getColumnIndex("Type"))).equals("食")) {
                                        map.put("Type", R.drawable.shi);
                                } else if ((cursor.getString(cursor.getColumnIndex("Type"))).equals("住")) {
                                        map.put("Type", R.drawable.zhu);
                                } else if ((cursor.getString(cursor.getColumnIndex("Type"))).equals("行")) {
                                        map.put("Type", R.drawable.xing);
                                } else if ((cursor.getString(cursor.getColumnIndex("Type"))).equals("其他")) {
                                        map.put("Type", R.drawable.getmoney);
                                }

                                cursor.moveToNext();
                                listData.add(map);
                                number++;
                                System.out.println(listData);
                        }

                        cursor.close();
                        mDataBase.close();
                        mMysql.close();
                }

                @Override
                public void onClick(View view) {
                        switch (view.getId()) {
                                case R.id.imageviewBack:
                                        this.finish();
                                        break;
                                default:
                                        break;
                        }

                }

                // 长按事件响应
                 View.OnCreateContextMenuListener listviewLongPress = new  View.OnCreateContextMenuListener() {
                        @Override
                        public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
                                // TODO Auto-generated method stub
                                final AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo;

                                new AlertDialog.Builder(BillsActivity.this)
                    /* 弹出窗口的最上头文字 */
                                        .setTitle("删除当前数据")
                    /* 设置弹出窗口的图式 */
                                        .setIcon(android.R.drawable.ic_dialog_info)
                    /* 设置弹出窗口的信息 */
                                        .setMessage("确定删除当前记录")
                                        .setPositiveButton("是",
                                                new DialogInterface.OnClickListener() {
                                                        public void onClick(
                                                                DialogInterface dialoginterface, int i) {
                                                                // 获取位置索引
                                                                int mListPos = info.position;
                                                                // 获取对应HashMap数据内容
                                                                HashMap<String, Object> map = listData.get(mListPos);
                                                                // 获取id
                                                                int id = Integer.valueOf((map.get("ID").toString()));

                                                                // 获取数组具体值后,可以对数据进行相关的操作,例如更新数据
                                                                String[] whereArgs = new String[]{String.valueOf(id)};
                                                                //获取当前数据库
                                                                mMysql = new MySQLiteHelper(BillsActivity.this, "finance.db", null, 1);
                                                                mDataBase = mMysql.getReadableDatabase();
                                                                try {
                                                                        mDataBase.delete("Finance", "ID=?", whereArgs);
                                                                        listData.remove(mListPos);
                                                                        mlistbillsAdapter.notifyDataSetChanged();
                                                                } catch (Exception e) {
                                                                        Log.e("删除出错了", "error");
                                                                } finally {
                                                                        mDataBase.close();
                                                                        mMysql.close();
                                                                }
                                                        }
                                                }
                                        ).setNegativeButton(
                                        "否",
                                        new DialogInterface.OnClickListener() {
                                                public void onClick(DialogInterface dialoginterface, int i) {
                                                }
                                        }
                                ).show();

                        }
                };
        }

RecorderActivity.java 
主要功能是添加账目,记录自己的消费。

package com.bank;
import android.app.Activity;
import android.app.DatePickerDialog;
import android.content.ContentValues;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.text.format.DateFormat;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Spinner;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.Calendar;
public class RecorderActivity extends Activity implements View.OnClickListener {
        private Button mbutton_sure, mbutton_cancel;
        private Spinner mspinner_type;
        private EditText  medittext_fee, medittext_remarks;
        private TextView  medittext_time;
        private RadioGroup mRadiogroup;
        private MySQLiteHelper mMysql;
        private SQLiteDatabase mDataBase;
        private ImageButton imageButtonBack;
        // 用来装日期的
        private Calendar calendar;
        //日历控件
        private DatePickerDialog dialog;
        //保存类型数据
        private String content_type, content_select_group;
        private ArrayList<String> Data = new ArrayList<String>();
        public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.recorder);
                //获得控件
                mbutton_sure = (Button) findViewById(R.id.plan_sure);
                mbutton_cancel = (Button) findViewById(R.id.button_cancel);
                medittext_time = (TextView) findViewById(R.id.edit_text_time);
                medittext_fee = (EditText) findViewById(R.id.editText_fee);
                medittext_remarks= (EditText) findViewById(R.id.editText_remarks);
                mbutton_sure = (Button) findViewById(R.id.plan_sure);
                mspinner_type= (Spinner) findViewById(R.id.spinner_type);
                mRadiogroup = (RadioGroup) this.findViewById(R.id.radioGroup);
                imageButtonBack= (ImageButton) this.findViewById(R.id.imageButtonBack);
                //设置Spinner的数据并操作
                ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
                        R.array.Select_item, android.R.layout.simple_spinner_item);
               adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                //将数据和spinner控件绑定在一起
                mspinner_type.setAdapter(adapter);
                medittext_time.setOnClickListener(this);
                imageButtonBack.setOnClickListener(this);
                mspinner_type.setOnItemSelectedListener(listener);
                mRadiogroup.setOnCheckedChangeListener(grouplistener);
                mbutton_sure.setOnClickListener(this);
                mbutton_cancel.setOnClickListener(this);
        }
        //单选按钮点击响应
        RadioGroup.OnCheckedChangeListener grouplistener = new RadioGroup.OnCheckedChangeListener() {
                @Override
                public void onCheckedChanged(RadioGroup arg0, int arg1) {
                        // TODO Auto-generated method stub
                        //获取变更后的选中项的ID
                        int radioButtonId = arg0.getCheckedRadioButtonId();
                        //根据ID获取RadioButton的实例
                        content_select_group = (((RadioButton) findViewById(radioButtonId)).getText()).toString();
                }
        };
        //spinner控件的响应事件
        AdapterView.OnItemSelectedListener listener = new AdapterView.OnItemSelectedListener() {
                public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
                        content_type = mspinner_type.getItemAtPosition(pos).toString();
                        //     Toast.makeText(getActivity(), "选中了"+content_type, Toast.LENGTH_LONG).show();
                }
                public void onNothingSelected(AdapterView<?> parent) {
                        // Another interface callback
                }
        };
        //视图组件点击时间
        @Override
        public void onClick(View view) {
                switch (view.getId()) {
                        case R.id.plan_sure:
                                Data.clear();
                                Data.add(content_type);
                                Data.add(medittext_time.getText().toString());
                                Data.add(medittext_fee.getText().toString());
                                Data.add(medittext_remarks.getText().toString());
                                Data.add(content_select_group);
                                //    Toast.makeText(getActivity(), "click sure button" + Data, Toast.LENGTH_LONG).show();
                                WriteData(Data);
                                //   Toast.makeText(getActivity(), "click sure button" + Data, Toast.LENGTH_LONG).show();
                                break;
                        case R.id.button_cancel:
                                //     GetData()
                                this.finish();
                                break;
                        case R.id.imageButtonBack:
                                this.finish();
                                break;
                        case R.id.edit_text_time:
                                calendar = Calendar.getInstance();
                                dialog = new DatePickerDialog(
                                        this,
                                        new DatePickerDialog.OnDateSetListener() {
                                                @Override
                                                public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
                                                        calendar.set(year, monthOfYear, dayOfMonth);
                                                        medittext_time.setText(DateFormat.format("yyy-MM-dd", calendar));
                                                }
                                        },
                                        calendar.get(Calendar.YEAR),
                                        calendar.get(Calendar.MONTH),
                                        calendar.get(Calendar.DAY_OF_MONTH)
                                );
                                dialog.show();
                                break;
                        default:
                                break;
                }

        }

        public void WriteData(ArrayList<String> Data)
        {
                mMysql = new MySQLiteHelper(this, "finance.db", null, 1);
                mDataBase = mMysql.getReadableDatabase();
                ContentValues cv=new ContentValues();
                cv.put("Type",Data.get(0));
                cv.put("Time",Data.get(1));
                cv.put("Fee",Data.get(2));
                cv.put("Remarks",Data.get(3));
                cv.put("Budget",Data.get(4));

                mDataBase.insert("finance", "Type", cv);
                mDataBase.close();
                mMysql.close();
                //结束当前activity
                this.finish();
        }
}

recordActivity布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent"
    android:layout_height="match_parent"
    android:background="#e2efd9"
    >
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="50dp"
        android:id="@+id/linearLayout3"
        android:orientation="horizontal"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="false"
        android:background="#444eb9"
        android:weightSum="1"
        android:gravity="center_vertical">

        <ImageButton
            android:layout_width="80dp"
            android:layout_height="30dp"
            android:id="@+id/imageButtonBack"
            android:src="@drawable/back"
            android:background="#444eb9"/>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="记一笔"
            android:id="@+id/textView2"
            android:layout_gravity="center_vertical"
            android:background="#444eb9"
            android:layout_marginLeft="80dp"
            android:textColor="#FFFFFF"
            android:textStyle="bold"
            android:editable="false"
            android:enabled="false"
            android:hint="size"
            android:textIsSelectable="false"
            android:textSize="20dp"/>
    </LinearLayout>
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="类型"
            android:id="@+id/texttype"

            android:layout_gravity="center_horizontal"
            android:textStyle="bold"
            android:clickable="false"
            android:editable="false"
            android:textColor="#0472f8"
            android:layout_weight="0.00"
            android:layout_marginLeft="57dp"
            android:layout_marginStart="57dp"
            android:layout_marginTop="24dp"
            android:layout_below="@+id/radioGroup"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"/>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="时间"
            android:id="@+id/texttimeshow"
            android:layout_gravity="center_horizontal"
            android:textColor="#0472f8"
            android:layout_below="@+id/texttype"
            android:layout_toLeftOf="@+id/spinner_type"
            android:layout_toStartOf="@+id/spinner_type"
            android:layout_marginTop="44dp"/>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="费用"
            android:id="@+id/textfeeshow"
            android:layout_gravity="center_horizontal"
            android:textColor="#0472f8"
            android:layout_marginTop="29dp"
            android:layout_below="@+id/edit_text_time"
            android:layout_toLeftOf="@+id/spinner_type"
            android:layout_toStartOf="@+id/spinner_type"/>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="备注"
            android:id="@+id/textremarksshow"
            android:layout_gravity="center_horizontal"
            android:textColor="#0472f8"
            android:layout_marginTop="27dp"
            android:layout_below="@+id/editText_fee"
            android:layout_toLeftOf="@+id/spinner_type"
            android:layout_toStartOf="@+id/spinner_type"/>

        <Spinner
            android:layout_width="match_parent"
            android:layout_height="25dp"
            android:id="@+id/spinner_type"
            android:spinnerMode="dialog"
            android:entries="@array/Select_item"
            android:layout_alignBottom="@+id/texttype"
            android:layout_toRightOf="@+id/texttype"
            android:layout_marginLeft="43dp"
            android:layout_marginRight="50dp"
            android:gravity="center_vertical|center"
            android:paddingLeft="50dp"
            android:touchscreenBlocksFocus="false"
            android:layout_alignParentLeft="false"
            style="@android:style/TextAppearance.Holo"/>

        <TextView
            android:id="@+id/edit_text_time"
            android:layout_width="wrap_content"
            android:layout_height="40dp"
            android:background="@android:drawable/edit_text"
            android:layout_alignTop="@+id/texttimeshow"
            android:layout_alignLeft="@+id/spinner_type"
            android:layout_alignStart="@+id/spinner_type"
            android:layout_alignParentRight="true"
            android:layout_alignParentEnd="true"
            android:layout_marginRight="50dp"
            android:editable="true"
            android:gravity="center"
            android:textColor="#736bae"/>

        <EditText
            android:id="@+id/editText_fee"
            android:editable="true"
            android:layout_width="match_parent"
            android:layout_height="40dp"
            android:background="@android:drawable/edit_text"
            android:layout_alignTop="@+id/textfeeshow"
            android:layout_alignLeft="@+id/edit_text_time"
            android:layout_alignStart="@+id/edit_text_time"
            android:layout_marginRight="50dp"
            android:textColor="#fc0303"
            android:gravity="center"/>
        <EditText
            android:id="@+id/editText_remarks"
            android:layout_width="fill_parent"
            android:layout_height="94dp"
            android:inputType="textMultiLine"
            android:singleLine="false"
            android:gravity="left|top"
            android:width="2dip"
            android:background="@android:drawable/edit_text"
            android:layout_alignTop="@+id/textremarksshow"
            android:layout_alignLeft="@+id/editText_fee"
            android:layout_alignStart="@+id/editText_fee"
            android:layout_marginRight="50dp"
            android:textColor="#5e5b5b"
            android:textSize="15dp"/>

    <Button
            android:layout_width="50dp"
            android:layout_height="30dp"
            android:text="保存"
            android:id="@+id/plan_sure"
            android:background="@drawable/buttonshape"
            android:layout_below="@+id/editText_remarks"
            android:layout_alignLeft="@+id/texttype"
            android:layout_alignStart="@+id/texttype"
            android:layout_marginTop="36dp"
            android:layout_marginLeft="20dp"/>

        <Button
            android:layout_width="50dp"
            android:layout_height="30dp"
            android:text="取消"
            android:id="@+id/button_cancel"
            android:background="@drawable/buttonshape"
            android:layout_alignTop="@+id/plan_sure"
            android:layout_alignRight="@+id/editText_remarks"
            android:layout_alignEnd="@+id/editText_remarks"
            android:layout_marginRight="20dp"/>

    <RadioGroup
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:orientation="horizontal"
        android:gravity="center_vertical"
        android:id="@+id/radioGroup"
        android:layout_below="@+id/linearLayout3"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_marginTop="58dp">

        <RadioButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="收入"
            android:id="@+id/radioButton"
            android:checked="false"
            android:layout_below="@+id/linearLayout3"
            android:layout_alignLeft="@+id/texttimeshow"
            android:layout_alignStart="@+id/texttimeshow"
            android:layout_gravity="center_vertical"
            android:layout_marginLeft="50dp"/>

        <RadioButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="支出"
            android:id="@+id/radioButton2"
            android:checked="false"
            android:layout_alignBottom="@+id/radioGroup"
            android:layout_centerHorizontal="true"
            android:layout_marginLeft="50dp"/>

    </RadioGroup>

</RelativeLayout>

                      

 

posted @ 2017-06-13 16:01  小绒花  阅读(261)  评论(0编辑  收藏  举报