Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 通过自定义listview显示SQLite信息_Java_Android_Sqlite_Listview_Layout - Fatal编程技术网

Java 通过自定义listview显示SQLite信息

Java 通过自定义listview显示SQLite信息,java,android,sqlite,listview,layout,Java,Android,Sqlite,Listview,Layout,我有一个工作的sqlite数据库,可以通过listview添加和查看这些项目。现在,我想在每个视图中动态添加一个编辑/删除按钮 在本教程之后,我创建了一个带有编辑/删除按钮的自定义XML文件。但是,我无法遵循教程,因为它没有显示检索和显示sqlite信息 自定义列表视图的XML布局: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http

我有一个工作的sqlite数据库,可以通过listview添加和查看这些项目。现在,我想在每个视图中动态添加一个编辑/删除按钮

在本教程之后,我创建了一个带有编辑/删除按钮的自定义XML文件。但是,我无法遵循教程,因为它没有显示检索和显示sqlite信息

自定义列表视图的XML布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal" >

    <EditText
        android:id="@+id/itemName"
        android:layout_width="0sp"
        android:layout_height="fill_parent"
        android:layout_weight="2"
        android:gravity="center_vertical"
        android:hint="@string/title"
        android:textAppearance="?android:attr/textAppearanceSmall" />

    <EditText
        android:id="@+id/itemQuantity"
        android:layout_width="0sp"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:gravity="center"
        android:inputType="numberDecimal"
        android:text="@string/quantity"
        android:textAppearance="?android:attr/textAppearanceSmall" />

    <ImageButton
        android:id="@+id/editItem"
        android:layout_width="@dimen/width_button"
        android:layout_height="fill_parent"
        android:contentDescription="@string/app_name"
        android:onClick="editOnClick"
        android:src="@android:drawable/ic_menu_edit" />
    
    <ImageButton
        android:id="@+id/deleteItem"
        android:layout_width="@dimen/width_button"
        android:layout_height="fill_parent"
        android:contentDescription="@string/app_name"
        android:onClick="removeOnClick"
        android:src="@android:drawable/ic_menu_delete" />
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/currentInventory"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    xmlns:tools="http://schemas.android.com/tools" >

    <TextView android:layout_marginTop="5dip"
        android:id="@+id/selectCat"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/selectCategory"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <Spinner
        android:id="@+id/categoryChoose"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:entries="@array/catergory_arrays" />
    
    
    <ListView
        android:id="@+id/customDbListView"
        android:layout_width="match_parent"
        android:layout_height="350dip"
        android:layout_marginBottom="20dip"
        android:layout_marginTop="20dip"
        tools:listitem="@layout/list_view_custom" >

    </ListView>

    <Button
        android:id="@+id/scanCurrent"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:layout_marginBottom="5dip"
        android:text="@string/scan" />

    <Button
        android:id="@+id/editItemCurrent"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:layout_marginBottom="5dp"
        android:text="@string/editItem" />

</LinearLayout>
package com.example.fooditemmonitor;

import java.util.ArrayList;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

public final class ItemDatabase {

    // the Activity or Application that is creating an object from this class.
    Context context;

    // a reference to the database used by this application/object
    private SQLiteDatabase db;

    // These constants are specific to the database.
    private final String DATABASE_NAME = "ItemDatabase.sqlite";
    private final int DATABASE_VERSION = 7;

    // These constants are specific to the database table.
    private final String TABLE_NAME = "foodItems";
    private final String COLUMN_NAME_ENTRY_ID = "entryid";
    private final String COLUMN_NAME_BARCODE = "barcode";
    private final String COLUMN_NAME_TITLE = "title";
    private final String COLUMN_NAME_QUANTITY = "quantity";
    private final String COLUMN_NAME_DATE = "date";
    private final String COLUMN_NAME_CATEGORY = "category";
    String SQL_DELETE_ENTRIES = "DROP TABLE IF EXISTS " + TABLE_NAME;
    String SQL_CREATE_TABLE = "create table " + TABLE_NAME + " ("
            + COLUMN_NAME_ENTRY_ID
            + " integer primary key autoincrement not null," + COLUMN_NAME_DATE
            + " date," + COLUMN_NAME_BARCODE + " text," + COLUMN_NAME_TITLE
            + " text," + COLUMN_NAME_QUANTITY + " int," + COLUMN_NAME_CATEGORY
            + " text" + ");";

    public ItemDatabase(Context context) {
        this.context = context;

        // create or open the database
        ItemDatabaseHelper helper = new ItemDatabaseHelper(context);
        this.db = helper.getWritableDatabase();
    }

    public void addRow(String rowStringOne, String rowStringTwo,
            String rowStringThree, String rowStringFour, int rowIntFive) {
        // this is a key value pair holder used by android's SQLite functions
        ContentValues values = new ContentValues();
        values.put(COLUMN_NAME_DATE, rowStringOne);
        values.put(COLUMN_NAME_BARCODE, rowStringTwo);
        values.put(COLUMN_NAME_TITLE, rowStringThree);
        values.put(COLUMN_NAME_CATEGORY, rowStringFour);
        values.put(COLUMN_NAME_QUANTITY, rowIntFive);

        // ask the database object to insert the new data
        try {
            db.insert(TABLE_NAME, null, values);
        } catch (Exception e) {
            Log.e("DB ERROR", e.toString());
            e.printStackTrace();
        }
    }

    public void updateRow(long rowID, String rowStringOne, String rowStringTwo,
            String rowStringThree, int rowIntFour) {
        // this is a key value pair holder used by android's SQLite functions
        ContentValues values = new ContentValues();
        values.put(COLUMN_NAME_DATE, rowStringOne);
        values.put(COLUMN_NAME_BARCODE, rowStringTwo);
        values.put(COLUMN_NAME_TITLE, rowStringThree);
        values.put(COLUMN_NAME_QUANTITY, rowIntFour);

        // ask the database object to update the database row of given rowID
        try {
            db.update(TABLE_NAME, values, COLUMN_NAME_ENTRY_ID + "=" + rowID,
                    null);
        } catch (Exception e) {
            Log.e("DB Error", e.toString());
            e.printStackTrace();
        }
    }

    public void deleteRow(long rowID) {
        // ask the database manager to delete the row of given id
        try {
            db.delete(TABLE_NAME, COLUMN_NAME_ENTRY_ID + "=" + rowID, null);
            getAllRowsAsArrays();
        } catch (Exception e) {
            Log.e("DB ERROR", e.toString());
            e.printStackTrace();
        }
    }

    public ArrayList<ArrayList<Object>> getCategoryOfArrays(String category) {
        // create an ArrayList that will hold all of the data collected from
        // the database.
        ArrayList<ArrayList<Object>> dataArrays = new ArrayList<ArrayList<Object>>();
        // this is a database call that creates a "cursor" object.
        // the cursor object store the information collected from the
        // database and is used to iterate through the data.
        Cursor cursor;

        try {
            // ask the database object to create the cursor.

            cursor = db.query(TABLE_NAME, new String[] { COLUMN_NAME_DATE,
                    COLUMN_NAME_TITLE, COLUMN_NAME_QUANTITY,
                    COLUMN_NAME_CATEGORY }, COLUMN_NAME_CATEGORY + "='"
                    + category + "'", null, null, null, COLUMN_NAME_TITLE
                    + " ASC");

            // move the cursor's pointer to position zero.
            cursor.moveToFirst();

            // if there is data after the current cursor position, add it to the
            // ArrayList.
            if (!cursor.isAfterLast()) {
                do {

                    ArrayList<Object> dataList = new ArrayList<Object>();

                    dataList.add(cursor.getString(cursor
                            .getColumnIndex(COLUMN_NAME_DATE)));
                    dataList.add(cursor.getString(cursor
                            .getColumnIndex(COLUMN_NAME_TITLE)));
                    dataList.add(cursor.getInt(cursor
                            .getColumnIndex(COLUMN_NAME_QUANTITY)));

                    dataArrays.add(dataList);
                } while (cursor.moveToNext());
            }

            // let java know that you are through with the cursor.
            cursor.close();
        } catch (SQLException e) {
            Log.e("DB Error", e.toString());
            e.printStackTrace();
        }
        // return the ArrayList that holds the data collected from the database.
        return dataArrays;
    }

    public ArrayList<ArrayList<Object>> getAllRowsAsArrays() {
        // create an ArrayList that will hold all of the data collected from
        // the database.
        ArrayList<ArrayList<Object>> dataArrays = new ArrayList<ArrayList<Object>>();
        // this is a database call that creates a "cursor" object.
        // the cursor object store the information collected from the
        // database and is used to iterate through the data.
        Cursor cursor;

        try {
            // ask the database object to create the cursor.

            cursor = db.query(TABLE_NAME, new String[] { COLUMN_NAME_TITLE,
                    COLUMN_NAME_QUANTITY, COLUMN_NAME_CATEGORY }, null, null,
                    null, null, COLUMN_NAME_TITLE + " ASC");

            // move the cursor's pointer to position zero.
            cursor.moveToFirst();

            // if there is data after the current cursor position, add it to the
            // ArrayList.
            if (!cursor.isAfterLast()) {
                do {
                    ArrayList<Object> dataList = new ArrayList<Object>();

                    dataList.add(cursor.getString(cursor
                            .getColumnIndex(COLUMN_NAME_TITLE)));
                    dataList.add(cursor.getInt(cursor
                            .getColumnIndex(COLUMN_NAME_QUANTITY)));

                    dataArrays.add(dataList);
                } while (cursor.moveToNext());
            }

            // let java know that you are through with the cursor.
            cursor.close();

        } catch (SQLException e) {
            Log.e("DB Error", e.toString());
            e.printStackTrace();
        }
        // return the ArrayList that holds the data collected from the database.
        return dataArrays;
    }

    public class ItemDatabaseHelper extends SQLiteOpenHelper {
        public ItemDatabaseHelper(Context context) {
            super(context, DATABASE_NAME, null, DATABASE_VERSION);
        }

        public void onCreate(SQLiteDatabase db) {
            // execute the query string to the database.
            db.execSQL(SQL_CREATE_TABLE);
        }

        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            // This database is only a cache for online data, so its upgrade
            // policy is to simply to discard the data and start over
            db.execSQL(SQL_DELETE_ENTRIES);
            onCreate(db);
        }
    }
}
package com.example.fooditemmonitor;

import java.util.ArrayList;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.Spinner;

public class CurrentItems extends Activity {

    ItemDatabase db;
    Context context;
    Button addButton, editButton;
    ListView listView;
    int spinnerID;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.current_inventory);

        db = new ItemDatabase(this);

        // create references and listeners for the GUI interface
        setupViews();

        // make the buttons clicks perform actions
        addButtonListeners();

        // display search results
        displaySearch();

    }

    private void setupViews() {
        // bring up current database items
        listView = (ListView) findViewById(R.id.customDbListView);

        // THE BUTTONS
        addButton = (Button) findViewById(R.id.scanCurrent);
        editButton = (Button) findViewById(R.id.editItemCurrent);
    }

    private void addButtonListeners() {

        Spinner selectCat = (Spinner) findViewById(R.id.categoryChoose);
        selectCat
                .setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                    public void onItemSelected(AdapterView<?> parent,
                            View view, int pos, long id) {
                        displaySearch();
                    }

                    public void onNothingSelected(AdapterView<?> parent) {
                        // Do nothing
                    }
                });

        addButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(CurrentItems.this, AddItem.class));

            }
        });

        editButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(CurrentItems.this, EditItems.class));

            }
        });
    }

    public int getSelectedItemPosition() {
        Spinner selectCat = (Spinner) findViewById(R.id.categoryChoose);
        spinnerID = selectCat.getSelectedItemPosition();
        return spinnerID;
    }

    private void displaySearch() {
        // TODO Auto-generated method stub
        Spinner selectCat = (Spinner) findViewById(R.id.categoryChoose);
        spinnerID = selectCat.getSelectedItemPosition();
        String catSelected;
        final ArrayList<String> items = new ArrayList<String>();
        final ArrayAdapter<String> itemArray;
        itemArray = new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, items);

        {
            if (getSelectedItemPosition() == 0) {
                ArrayList<ArrayList<Object>> data = db.getAllRowsAsArrays();
                for (int position = 0; position < data.size(); position++) {
                    ArrayList<Object> row = data.get(position);
                    items.add("\nTitle:  " + row.get(0).toString()
                            + "\nQuantity:  " + row.get(1).toString() + "\n");
                    itemArray.notifyDataSetChanged();
                }
                listView.setAdapter(itemArray);
            } else if (getSelectedItemPosition() == 1) {
                catSelected = "Fridge";
                ArrayList<ArrayList<Object>> data = db
                        .getCategoryOfArrays(catSelected);
                for (int position = 0; position < data.size(); position++) {
                    ArrayList<Object> row = data.get(position);
                    items.add("\nDate:  " + row.get(0).toString()
                            + "\nTitle:  " + row.get(1).toString()
                            + "\nQuantity:  "
                            + Integer.parseInt(row.get(2).toString()) + "\n");
                    itemArray.notifyDataSetChanged();
                }
                listView.setAdapter(itemArray);
            } else if (getSelectedItemPosition() == 2) {
                catSelected = "Can";
                ArrayList<ArrayList<Object>> data = db
                        .getCategoryOfArrays(catSelected);
                for (int position = 0; position < data.size(); position++) {
                    ArrayList<Object> row = data.get(position);
                    items.add("\nDate:  " + row.get(0).toString()
                            + "\nTitle:  " + row.get(1).toString()
                            + "\nQuantity:  "
                            + Integer.parseInt(row.get(2).toString()) + "\n");
                    itemArray.notifyDataSetChanged();
                }
                listView.setAdapter(itemArray);
            } else if (getSelectedItemPosition() == 3) {
                catSelected = "Fruit";
                ArrayList<ArrayList<Object>> data = db
                        .getCategoryOfArrays(catSelected);
                for (int position = 0; position < data.size(); position++) {
                    ArrayList<Object> row = data.get(position);
                    items.add("\nDate:  " + row.get(0).toString()
                            + "\nTitle:  " + row.get(1).toString()
                            + "\nQuantity:  "
                            + Integer.parseInt(row.get(2).toString()) + "\n");
                    itemArray.notifyDataSetChanged();
                }
                listView.setAdapter(itemArray);
            } else if (getSelectedItemPosition() == 4) {
                catSelected = "Vegetable";
                ArrayList<ArrayList<Object>> data = db
                        .getCategoryOfArrays(catSelected);
                for (int position = 0; position < data.size(); position++) {
                    ArrayList<Object> row = data.get(position);
                    items.add("\nDate:  " + row.get(0).toString()
                            + "\nTitle:  " + row.get(1).toString()
                            + "\nQuantity:  "
                            + Integer.parseInt(row.get(2).toString()) + "\n");
                    itemArray.notifyDataSetChanged();
                }
                listView.setAdapter(itemArray);
            } else {
                ArrayList<ArrayList<Object>> data = db.getAllRowsAsArrays();
                for (int position = 0; position < data.size(); position++) {
                    ArrayList<Object> row = data.get(position);
                    items.add("\nTitle:  " + row.get(0).toString()
                            + "\nQuantity:  " + row.get(1).toString() + "\n");
                    itemArray.notifyDataSetChanged();
                }

            }
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.main, menu);
        return super.onCreateOptionsMenu(menu);
    }
}

当前库存XML(其中显示listview):

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal" >

    <EditText
        android:id="@+id/itemName"
        android:layout_width="0sp"
        android:layout_height="fill_parent"
        android:layout_weight="2"
        android:gravity="center_vertical"
        android:hint="@string/title"
        android:textAppearance="?android:attr/textAppearanceSmall" />

    <EditText
        android:id="@+id/itemQuantity"
        android:layout_width="0sp"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:gravity="center"
        android:inputType="numberDecimal"
        android:text="@string/quantity"
        android:textAppearance="?android:attr/textAppearanceSmall" />

    <ImageButton
        android:id="@+id/editItem"
        android:layout_width="@dimen/width_button"
        android:layout_height="fill_parent"
        android:contentDescription="@string/app_name"
        android:onClick="editOnClick"
        android:src="@android:drawable/ic_menu_edit" />
    
    <ImageButton
        android:id="@+id/deleteItem"
        android:layout_width="@dimen/width_button"
        android:layout_height="fill_parent"
        android:contentDescription="@string/app_name"
        android:onClick="removeOnClick"
        android:src="@android:drawable/ic_menu_delete" />
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/currentInventory"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    xmlns:tools="http://schemas.android.com/tools" >

    <TextView android:layout_marginTop="5dip"
        android:id="@+id/selectCat"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/selectCategory"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <Spinner
        android:id="@+id/categoryChoose"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:entries="@array/catergory_arrays" />
    
    
    <ListView
        android:id="@+id/customDbListView"
        android:layout_width="match_parent"
        android:layout_height="350dip"
        android:layout_marginBottom="20dip"
        android:layout_marginTop="20dip"
        tools:listitem="@layout/list_view_custom" >

    </ListView>

    <Button
        android:id="@+id/scanCurrent"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:layout_marginBottom="5dip"
        android:text="@string/scan" />

    <Button
        android:id="@+id/editItemCurrent"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:layout_marginBottom="5dp"
        android:text="@string/editItem" />

</LinearLayout>
package com.example.fooditemmonitor;

import java.util.ArrayList;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

public final class ItemDatabase {

    // the Activity or Application that is creating an object from this class.
    Context context;

    // a reference to the database used by this application/object
    private SQLiteDatabase db;

    // These constants are specific to the database.
    private final String DATABASE_NAME = "ItemDatabase.sqlite";
    private final int DATABASE_VERSION = 7;

    // These constants are specific to the database table.
    private final String TABLE_NAME = "foodItems";
    private final String COLUMN_NAME_ENTRY_ID = "entryid";
    private final String COLUMN_NAME_BARCODE = "barcode";
    private final String COLUMN_NAME_TITLE = "title";
    private final String COLUMN_NAME_QUANTITY = "quantity";
    private final String COLUMN_NAME_DATE = "date";
    private final String COLUMN_NAME_CATEGORY = "category";
    String SQL_DELETE_ENTRIES = "DROP TABLE IF EXISTS " + TABLE_NAME;
    String SQL_CREATE_TABLE = "create table " + TABLE_NAME + " ("
            + COLUMN_NAME_ENTRY_ID
            + " integer primary key autoincrement not null," + COLUMN_NAME_DATE
            + " date," + COLUMN_NAME_BARCODE + " text," + COLUMN_NAME_TITLE
            + " text," + COLUMN_NAME_QUANTITY + " int," + COLUMN_NAME_CATEGORY
            + " text" + ");";

    public ItemDatabase(Context context) {
        this.context = context;

        // create or open the database
        ItemDatabaseHelper helper = new ItemDatabaseHelper(context);
        this.db = helper.getWritableDatabase();
    }

    public void addRow(String rowStringOne, String rowStringTwo,
            String rowStringThree, String rowStringFour, int rowIntFive) {
        // this is a key value pair holder used by android's SQLite functions
        ContentValues values = new ContentValues();
        values.put(COLUMN_NAME_DATE, rowStringOne);
        values.put(COLUMN_NAME_BARCODE, rowStringTwo);
        values.put(COLUMN_NAME_TITLE, rowStringThree);
        values.put(COLUMN_NAME_CATEGORY, rowStringFour);
        values.put(COLUMN_NAME_QUANTITY, rowIntFive);

        // ask the database object to insert the new data
        try {
            db.insert(TABLE_NAME, null, values);
        } catch (Exception e) {
            Log.e("DB ERROR", e.toString());
            e.printStackTrace();
        }
    }

    public void updateRow(long rowID, String rowStringOne, String rowStringTwo,
            String rowStringThree, int rowIntFour) {
        // this is a key value pair holder used by android's SQLite functions
        ContentValues values = new ContentValues();
        values.put(COLUMN_NAME_DATE, rowStringOne);
        values.put(COLUMN_NAME_BARCODE, rowStringTwo);
        values.put(COLUMN_NAME_TITLE, rowStringThree);
        values.put(COLUMN_NAME_QUANTITY, rowIntFour);

        // ask the database object to update the database row of given rowID
        try {
            db.update(TABLE_NAME, values, COLUMN_NAME_ENTRY_ID + "=" + rowID,
                    null);
        } catch (Exception e) {
            Log.e("DB Error", e.toString());
            e.printStackTrace();
        }
    }

    public void deleteRow(long rowID) {
        // ask the database manager to delete the row of given id
        try {
            db.delete(TABLE_NAME, COLUMN_NAME_ENTRY_ID + "=" + rowID, null);
            getAllRowsAsArrays();
        } catch (Exception e) {
            Log.e("DB ERROR", e.toString());
            e.printStackTrace();
        }
    }

    public ArrayList<ArrayList<Object>> getCategoryOfArrays(String category) {
        // create an ArrayList that will hold all of the data collected from
        // the database.
        ArrayList<ArrayList<Object>> dataArrays = new ArrayList<ArrayList<Object>>();
        // this is a database call that creates a "cursor" object.
        // the cursor object store the information collected from the
        // database and is used to iterate through the data.
        Cursor cursor;

        try {
            // ask the database object to create the cursor.

            cursor = db.query(TABLE_NAME, new String[] { COLUMN_NAME_DATE,
                    COLUMN_NAME_TITLE, COLUMN_NAME_QUANTITY,
                    COLUMN_NAME_CATEGORY }, COLUMN_NAME_CATEGORY + "='"
                    + category + "'", null, null, null, COLUMN_NAME_TITLE
                    + " ASC");

            // move the cursor's pointer to position zero.
            cursor.moveToFirst();

            // if there is data after the current cursor position, add it to the
            // ArrayList.
            if (!cursor.isAfterLast()) {
                do {

                    ArrayList<Object> dataList = new ArrayList<Object>();

                    dataList.add(cursor.getString(cursor
                            .getColumnIndex(COLUMN_NAME_DATE)));
                    dataList.add(cursor.getString(cursor
                            .getColumnIndex(COLUMN_NAME_TITLE)));
                    dataList.add(cursor.getInt(cursor
                            .getColumnIndex(COLUMN_NAME_QUANTITY)));

                    dataArrays.add(dataList);
                } while (cursor.moveToNext());
            }

            // let java know that you are through with the cursor.
            cursor.close();
        } catch (SQLException e) {
            Log.e("DB Error", e.toString());
            e.printStackTrace();
        }
        // return the ArrayList that holds the data collected from the database.
        return dataArrays;
    }

    public ArrayList<ArrayList<Object>> getAllRowsAsArrays() {
        // create an ArrayList that will hold all of the data collected from
        // the database.
        ArrayList<ArrayList<Object>> dataArrays = new ArrayList<ArrayList<Object>>();
        // this is a database call that creates a "cursor" object.
        // the cursor object store the information collected from the
        // database and is used to iterate through the data.
        Cursor cursor;

        try {
            // ask the database object to create the cursor.

            cursor = db.query(TABLE_NAME, new String[] { COLUMN_NAME_TITLE,
                    COLUMN_NAME_QUANTITY, COLUMN_NAME_CATEGORY }, null, null,
                    null, null, COLUMN_NAME_TITLE + " ASC");

            // move the cursor's pointer to position zero.
            cursor.moveToFirst();

            // if there is data after the current cursor position, add it to the
            // ArrayList.
            if (!cursor.isAfterLast()) {
                do {
                    ArrayList<Object> dataList = new ArrayList<Object>();

                    dataList.add(cursor.getString(cursor
                            .getColumnIndex(COLUMN_NAME_TITLE)));
                    dataList.add(cursor.getInt(cursor
                            .getColumnIndex(COLUMN_NAME_QUANTITY)));

                    dataArrays.add(dataList);
                } while (cursor.moveToNext());
            }

            // let java know that you are through with the cursor.
            cursor.close();

        } catch (SQLException e) {
            Log.e("DB Error", e.toString());
            e.printStackTrace();
        }
        // return the ArrayList that holds the data collected from the database.
        return dataArrays;
    }

    public class ItemDatabaseHelper extends SQLiteOpenHelper {
        public ItemDatabaseHelper(Context context) {
            super(context, DATABASE_NAME, null, DATABASE_VERSION);
        }

        public void onCreate(SQLiteDatabase db) {
            // execute the query string to the database.
            db.execSQL(SQL_CREATE_TABLE);
        }

        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            // This database is only a cache for online data, so its upgrade
            // policy is to simply to discard the data and start over
            db.execSQL(SQL_DELETE_ENTRIES);
            onCreate(db);
        }
    }
}
package com.example.fooditemmonitor;

import java.util.ArrayList;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.Spinner;

public class CurrentItems extends Activity {

    ItemDatabase db;
    Context context;
    Button addButton, editButton;
    ListView listView;
    int spinnerID;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.current_inventory);

        db = new ItemDatabase(this);

        // create references and listeners for the GUI interface
        setupViews();

        // make the buttons clicks perform actions
        addButtonListeners();

        // display search results
        displaySearch();

    }

    private void setupViews() {
        // bring up current database items
        listView = (ListView) findViewById(R.id.customDbListView);

        // THE BUTTONS
        addButton = (Button) findViewById(R.id.scanCurrent);
        editButton = (Button) findViewById(R.id.editItemCurrent);
    }

    private void addButtonListeners() {

        Spinner selectCat = (Spinner) findViewById(R.id.categoryChoose);
        selectCat
                .setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                    public void onItemSelected(AdapterView<?> parent,
                            View view, int pos, long id) {
                        displaySearch();
                    }

                    public void onNothingSelected(AdapterView<?> parent) {
                        // Do nothing
                    }
                });

        addButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(CurrentItems.this, AddItem.class));

            }
        });

        editButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(CurrentItems.this, EditItems.class));

            }
        });
    }

    public int getSelectedItemPosition() {
        Spinner selectCat = (Spinner) findViewById(R.id.categoryChoose);
        spinnerID = selectCat.getSelectedItemPosition();
        return spinnerID;
    }

    private void displaySearch() {
        // TODO Auto-generated method stub
        Spinner selectCat = (Spinner) findViewById(R.id.categoryChoose);
        spinnerID = selectCat.getSelectedItemPosition();
        String catSelected;
        final ArrayList<String> items = new ArrayList<String>();
        final ArrayAdapter<String> itemArray;
        itemArray = new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, items);

        {
            if (getSelectedItemPosition() == 0) {
                ArrayList<ArrayList<Object>> data = db.getAllRowsAsArrays();
                for (int position = 0; position < data.size(); position++) {
                    ArrayList<Object> row = data.get(position);
                    items.add("\nTitle:  " + row.get(0).toString()
                            + "\nQuantity:  " + row.get(1).toString() + "\n");
                    itemArray.notifyDataSetChanged();
                }
                listView.setAdapter(itemArray);
            } else if (getSelectedItemPosition() == 1) {
                catSelected = "Fridge";
                ArrayList<ArrayList<Object>> data = db
                        .getCategoryOfArrays(catSelected);
                for (int position = 0; position < data.size(); position++) {
                    ArrayList<Object> row = data.get(position);
                    items.add("\nDate:  " + row.get(0).toString()
                            + "\nTitle:  " + row.get(1).toString()
                            + "\nQuantity:  "
                            + Integer.parseInt(row.get(2).toString()) + "\n");
                    itemArray.notifyDataSetChanged();
                }
                listView.setAdapter(itemArray);
            } else if (getSelectedItemPosition() == 2) {
                catSelected = "Can";
                ArrayList<ArrayList<Object>> data = db
                        .getCategoryOfArrays(catSelected);
                for (int position = 0; position < data.size(); position++) {
                    ArrayList<Object> row = data.get(position);
                    items.add("\nDate:  " + row.get(0).toString()
                            + "\nTitle:  " + row.get(1).toString()
                            + "\nQuantity:  "
                            + Integer.parseInt(row.get(2).toString()) + "\n");
                    itemArray.notifyDataSetChanged();
                }
                listView.setAdapter(itemArray);
            } else if (getSelectedItemPosition() == 3) {
                catSelected = "Fruit";
                ArrayList<ArrayList<Object>> data = db
                        .getCategoryOfArrays(catSelected);
                for (int position = 0; position < data.size(); position++) {
                    ArrayList<Object> row = data.get(position);
                    items.add("\nDate:  " + row.get(0).toString()
                            + "\nTitle:  " + row.get(1).toString()
                            + "\nQuantity:  "
                            + Integer.parseInt(row.get(2).toString()) + "\n");
                    itemArray.notifyDataSetChanged();
                }
                listView.setAdapter(itemArray);
            } else if (getSelectedItemPosition() == 4) {
                catSelected = "Vegetable";
                ArrayList<ArrayList<Object>> data = db
                        .getCategoryOfArrays(catSelected);
                for (int position = 0; position < data.size(); position++) {
                    ArrayList<Object> row = data.get(position);
                    items.add("\nDate:  " + row.get(0).toString()
                            + "\nTitle:  " + row.get(1).toString()
                            + "\nQuantity:  "
                            + Integer.parseInt(row.get(2).toString()) + "\n");
                    itemArray.notifyDataSetChanged();
                }
                listView.setAdapter(itemArray);
            } else {
                ArrayList<ArrayList<Object>> data = db.getAllRowsAsArrays();
                for (int position = 0; position < data.size(); position++) {
                    ArrayList<Object> row = data.get(position);
                    items.add("\nTitle:  " + row.get(0).toString()
                            + "\nQuantity:  " + row.get(1).toString() + "\n");
                    itemArray.notifyDataSetChanged();
                }

            }
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.main, menu);
        return super.onCreateOptionsMenu(menu);
    }
}

创建数据库:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal" >

    <EditText
        android:id="@+id/itemName"
        android:layout_width="0sp"
        android:layout_height="fill_parent"
        android:layout_weight="2"
        android:gravity="center_vertical"
        android:hint="@string/title"
        android:textAppearance="?android:attr/textAppearanceSmall" />

    <EditText
        android:id="@+id/itemQuantity"
        android:layout_width="0sp"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:gravity="center"
        android:inputType="numberDecimal"
        android:text="@string/quantity"
        android:textAppearance="?android:attr/textAppearanceSmall" />

    <ImageButton
        android:id="@+id/editItem"
        android:layout_width="@dimen/width_button"
        android:layout_height="fill_parent"
        android:contentDescription="@string/app_name"
        android:onClick="editOnClick"
        android:src="@android:drawable/ic_menu_edit" />
    
    <ImageButton
        android:id="@+id/deleteItem"
        android:layout_width="@dimen/width_button"
        android:layout_height="fill_parent"
        android:contentDescription="@string/app_name"
        android:onClick="removeOnClick"
        android:src="@android:drawable/ic_menu_delete" />
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/currentInventory"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    xmlns:tools="http://schemas.android.com/tools" >

    <TextView android:layout_marginTop="5dip"
        android:id="@+id/selectCat"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/selectCategory"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <Spinner
        android:id="@+id/categoryChoose"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:entries="@array/catergory_arrays" />
    
    
    <ListView
        android:id="@+id/customDbListView"
        android:layout_width="match_parent"
        android:layout_height="350dip"
        android:layout_marginBottom="20dip"
        android:layout_marginTop="20dip"
        tools:listitem="@layout/list_view_custom" >

    </ListView>

    <Button
        android:id="@+id/scanCurrent"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:layout_marginBottom="5dip"
        android:text="@string/scan" />

    <Button
        android:id="@+id/editItemCurrent"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:layout_marginBottom="5dp"
        android:text="@string/editItem" />

</LinearLayout>
package com.example.fooditemmonitor;

import java.util.ArrayList;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

public final class ItemDatabase {

    // the Activity or Application that is creating an object from this class.
    Context context;

    // a reference to the database used by this application/object
    private SQLiteDatabase db;

    // These constants are specific to the database.
    private final String DATABASE_NAME = "ItemDatabase.sqlite";
    private final int DATABASE_VERSION = 7;

    // These constants are specific to the database table.
    private final String TABLE_NAME = "foodItems";
    private final String COLUMN_NAME_ENTRY_ID = "entryid";
    private final String COLUMN_NAME_BARCODE = "barcode";
    private final String COLUMN_NAME_TITLE = "title";
    private final String COLUMN_NAME_QUANTITY = "quantity";
    private final String COLUMN_NAME_DATE = "date";
    private final String COLUMN_NAME_CATEGORY = "category";
    String SQL_DELETE_ENTRIES = "DROP TABLE IF EXISTS " + TABLE_NAME;
    String SQL_CREATE_TABLE = "create table " + TABLE_NAME + " ("
            + COLUMN_NAME_ENTRY_ID
            + " integer primary key autoincrement not null," + COLUMN_NAME_DATE
            + " date," + COLUMN_NAME_BARCODE + " text," + COLUMN_NAME_TITLE
            + " text," + COLUMN_NAME_QUANTITY + " int," + COLUMN_NAME_CATEGORY
            + " text" + ");";

    public ItemDatabase(Context context) {
        this.context = context;

        // create or open the database
        ItemDatabaseHelper helper = new ItemDatabaseHelper(context);
        this.db = helper.getWritableDatabase();
    }

    public void addRow(String rowStringOne, String rowStringTwo,
            String rowStringThree, String rowStringFour, int rowIntFive) {
        // this is a key value pair holder used by android's SQLite functions
        ContentValues values = new ContentValues();
        values.put(COLUMN_NAME_DATE, rowStringOne);
        values.put(COLUMN_NAME_BARCODE, rowStringTwo);
        values.put(COLUMN_NAME_TITLE, rowStringThree);
        values.put(COLUMN_NAME_CATEGORY, rowStringFour);
        values.put(COLUMN_NAME_QUANTITY, rowIntFive);

        // ask the database object to insert the new data
        try {
            db.insert(TABLE_NAME, null, values);
        } catch (Exception e) {
            Log.e("DB ERROR", e.toString());
            e.printStackTrace();
        }
    }

    public void updateRow(long rowID, String rowStringOne, String rowStringTwo,
            String rowStringThree, int rowIntFour) {
        // this is a key value pair holder used by android's SQLite functions
        ContentValues values = new ContentValues();
        values.put(COLUMN_NAME_DATE, rowStringOne);
        values.put(COLUMN_NAME_BARCODE, rowStringTwo);
        values.put(COLUMN_NAME_TITLE, rowStringThree);
        values.put(COLUMN_NAME_QUANTITY, rowIntFour);

        // ask the database object to update the database row of given rowID
        try {
            db.update(TABLE_NAME, values, COLUMN_NAME_ENTRY_ID + "=" + rowID,
                    null);
        } catch (Exception e) {
            Log.e("DB Error", e.toString());
            e.printStackTrace();
        }
    }

    public void deleteRow(long rowID) {
        // ask the database manager to delete the row of given id
        try {
            db.delete(TABLE_NAME, COLUMN_NAME_ENTRY_ID + "=" + rowID, null);
            getAllRowsAsArrays();
        } catch (Exception e) {
            Log.e("DB ERROR", e.toString());
            e.printStackTrace();
        }
    }

    public ArrayList<ArrayList<Object>> getCategoryOfArrays(String category) {
        // create an ArrayList that will hold all of the data collected from
        // the database.
        ArrayList<ArrayList<Object>> dataArrays = new ArrayList<ArrayList<Object>>();
        // this is a database call that creates a "cursor" object.
        // the cursor object store the information collected from the
        // database and is used to iterate through the data.
        Cursor cursor;

        try {
            // ask the database object to create the cursor.

            cursor = db.query(TABLE_NAME, new String[] { COLUMN_NAME_DATE,
                    COLUMN_NAME_TITLE, COLUMN_NAME_QUANTITY,
                    COLUMN_NAME_CATEGORY }, COLUMN_NAME_CATEGORY + "='"
                    + category + "'", null, null, null, COLUMN_NAME_TITLE
                    + " ASC");

            // move the cursor's pointer to position zero.
            cursor.moveToFirst();

            // if there is data after the current cursor position, add it to the
            // ArrayList.
            if (!cursor.isAfterLast()) {
                do {

                    ArrayList<Object> dataList = new ArrayList<Object>();

                    dataList.add(cursor.getString(cursor
                            .getColumnIndex(COLUMN_NAME_DATE)));
                    dataList.add(cursor.getString(cursor
                            .getColumnIndex(COLUMN_NAME_TITLE)));
                    dataList.add(cursor.getInt(cursor
                            .getColumnIndex(COLUMN_NAME_QUANTITY)));

                    dataArrays.add(dataList);
                } while (cursor.moveToNext());
            }

            // let java know that you are through with the cursor.
            cursor.close();
        } catch (SQLException e) {
            Log.e("DB Error", e.toString());
            e.printStackTrace();
        }
        // return the ArrayList that holds the data collected from the database.
        return dataArrays;
    }

    public ArrayList<ArrayList<Object>> getAllRowsAsArrays() {
        // create an ArrayList that will hold all of the data collected from
        // the database.
        ArrayList<ArrayList<Object>> dataArrays = new ArrayList<ArrayList<Object>>();
        // this is a database call that creates a "cursor" object.
        // the cursor object store the information collected from the
        // database and is used to iterate through the data.
        Cursor cursor;

        try {
            // ask the database object to create the cursor.

            cursor = db.query(TABLE_NAME, new String[] { COLUMN_NAME_TITLE,
                    COLUMN_NAME_QUANTITY, COLUMN_NAME_CATEGORY }, null, null,
                    null, null, COLUMN_NAME_TITLE + " ASC");

            // move the cursor's pointer to position zero.
            cursor.moveToFirst();

            // if there is data after the current cursor position, add it to the
            // ArrayList.
            if (!cursor.isAfterLast()) {
                do {
                    ArrayList<Object> dataList = new ArrayList<Object>();

                    dataList.add(cursor.getString(cursor
                            .getColumnIndex(COLUMN_NAME_TITLE)));
                    dataList.add(cursor.getInt(cursor
                            .getColumnIndex(COLUMN_NAME_QUANTITY)));

                    dataArrays.add(dataList);
                } while (cursor.moveToNext());
            }

            // let java know that you are through with the cursor.
            cursor.close();

        } catch (SQLException e) {
            Log.e("DB Error", e.toString());
            e.printStackTrace();
        }
        // return the ArrayList that holds the data collected from the database.
        return dataArrays;
    }

    public class ItemDatabaseHelper extends SQLiteOpenHelper {
        public ItemDatabaseHelper(Context context) {
            super(context, DATABASE_NAME, null, DATABASE_VERSION);
        }

        public void onCreate(SQLiteDatabase db) {
            // execute the query string to the database.
            db.execSQL(SQL_CREATE_TABLE);
        }

        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            // This database is only a cache for online data, so its upgrade
            // policy is to simply to discard the data and start over
            db.execSQL(SQL_DELETE_ENTRIES);
            onCreate(db);
        }
    }
}
package com.example.fooditemmonitor;

import java.util.ArrayList;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.Spinner;

public class CurrentItems extends Activity {

    ItemDatabase db;
    Context context;
    Button addButton, editButton;
    ListView listView;
    int spinnerID;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.current_inventory);

        db = new ItemDatabase(this);

        // create references and listeners for the GUI interface
        setupViews();

        // make the buttons clicks perform actions
        addButtonListeners();

        // display search results
        displaySearch();

    }

    private void setupViews() {
        // bring up current database items
        listView = (ListView) findViewById(R.id.customDbListView);

        // THE BUTTONS
        addButton = (Button) findViewById(R.id.scanCurrent);
        editButton = (Button) findViewById(R.id.editItemCurrent);
    }

    private void addButtonListeners() {

        Spinner selectCat = (Spinner) findViewById(R.id.categoryChoose);
        selectCat
                .setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                    public void onItemSelected(AdapterView<?> parent,
                            View view, int pos, long id) {
                        displaySearch();
                    }

                    public void onNothingSelected(AdapterView<?> parent) {
                        // Do nothing
                    }
                });

        addButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(CurrentItems.this, AddItem.class));

            }
        });

        editButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(CurrentItems.this, EditItems.class));

            }
        });
    }

    public int getSelectedItemPosition() {
        Spinner selectCat = (Spinner) findViewById(R.id.categoryChoose);
        spinnerID = selectCat.getSelectedItemPosition();
        return spinnerID;
    }

    private void displaySearch() {
        // TODO Auto-generated method stub
        Spinner selectCat = (Spinner) findViewById(R.id.categoryChoose);
        spinnerID = selectCat.getSelectedItemPosition();
        String catSelected;
        final ArrayList<String> items = new ArrayList<String>();
        final ArrayAdapter<String> itemArray;
        itemArray = new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, items);

        {
            if (getSelectedItemPosition() == 0) {
                ArrayList<ArrayList<Object>> data = db.getAllRowsAsArrays();
                for (int position = 0; position < data.size(); position++) {
                    ArrayList<Object> row = data.get(position);
                    items.add("\nTitle:  " + row.get(0).toString()
                            + "\nQuantity:  " + row.get(1).toString() + "\n");
                    itemArray.notifyDataSetChanged();
                }
                listView.setAdapter(itemArray);
            } else if (getSelectedItemPosition() == 1) {
                catSelected = "Fridge";
                ArrayList<ArrayList<Object>> data = db
                        .getCategoryOfArrays(catSelected);
                for (int position = 0; position < data.size(); position++) {
                    ArrayList<Object> row = data.get(position);
                    items.add("\nDate:  " + row.get(0).toString()
                            + "\nTitle:  " + row.get(1).toString()
                            + "\nQuantity:  "
                            + Integer.parseInt(row.get(2).toString()) + "\n");
                    itemArray.notifyDataSetChanged();
                }
                listView.setAdapter(itemArray);
            } else if (getSelectedItemPosition() == 2) {
                catSelected = "Can";
                ArrayList<ArrayList<Object>> data = db
                        .getCategoryOfArrays(catSelected);
                for (int position = 0; position < data.size(); position++) {
                    ArrayList<Object> row = data.get(position);
                    items.add("\nDate:  " + row.get(0).toString()
                            + "\nTitle:  " + row.get(1).toString()
                            + "\nQuantity:  "
                            + Integer.parseInt(row.get(2).toString()) + "\n");
                    itemArray.notifyDataSetChanged();
                }
                listView.setAdapter(itemArray);
            } else if (getSelectedItemPosition() == 3) {
                catSelected = "Fruit";
                ArrayList<ArrayList<Object>> data = db
                        .getCategoryOfArrays(catSelected);
                for (int position = 0; position < data.size(); position++) {
                    ArrayList<Object> row = data.get(position);
                    items.add("\nDate:  " + row.get(0).toString()
                            + "\nTitle:  " + row.get(1).toString()
                            + "\nQuantity:  "
                            + Integer.parseInt(row.get(2).toString()) + "\n");
                    itemArray.notifyDataSetChanged();
                }
                listView.setAdapter(itemArray);
            } else if (getSelectedItemPosition() == 4) {
                catSelected = "Vegetable";
                ArrayList<ArrayList<Object>> data = db
                        .getCategoryOfArrays(catSelected);
                for (int position = 0; position < data.size(); position++) {
                    ArrayList<Object> row = data.get(position);
                    items.add("\nDate:  " + row.get(0).toString()
                            + "\nTitle:  " + row.get(1).toString()
                            + "\nQuantity:  "
                            + Integer.parseInt(row.get(2).toString()) + "\n");
                    itemArray.notifyDataSetChanged();
                }
                listView.setAdapter(itemArray);
            } else {
                ArrayList<ArrayList<Object>> data = db.getAllRowsAsArrays();
                for (int position = 0; position < data.size(); position++) {
                    ArrayList<Object> row = data.get(position);
                    items.add("\nTitle:  " + row.get(0).toString()
                            + "\nQuantity:  " + row.get(1).toString() + "\n");
                    itemArray.notifyDataSetChanged();
                }

            }
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.main, menu);
        return super.onCreateOptionsMenu(menu);
    }
}
package com.example.foodeTommonitor;
导入java.util.ArrayList;
导入android.content.ContentValues;
导入android.content.Context;
导入android.database.Cursor;
导入android.database.SQLException;
导入android.database.sqlite.SQLiteDatabase;
导入android.database.sqlite.SQLiteOpenHelper;
导入android.util.Log;
公共最终类项目数据库{
//正在从此类创建对象的活动或应用程序。
语境;
//此应用程序/对象使用的数据库的引用
专用数据库数据库;
//这些常量特定于数据库。
私有最终字符串数据库\u NAME=“ItemDatabase.sqlite”;
私有最终int数据库_版本=7;
//这些常量特定于数据库表。
私有最终字符串表\u NAME=“foodItems”;
私有最终字符串列\u NAME\u ENTRY\u ID=“entryid”;
私有最终字符串列\u NAME\u BARCODE=“BARCODE”;
私有最终字符串列\u NAME\u TITLE=“TITLE”;
私有最终字符串列\u NAME\u QUANTITY=“QUANTITY”;
私有最终字符串列\u NAME\u DATE=“DATE”;
私有最终字符串列\u NAME\u CATEGORY=“CATEGORY”;
字符串SQL\u DELETE\u ENTRIES=“如果存在,则删除表格”+表格名称;
字符串SQL\u CREATE\u TABLE=“CREATE TABLE”+TABLE\u NAME+”(“
+列\u名称\u条目\u ID
+“整型主键自动递增不为空,”+列\u名称\u日期
+“日期”+“列名称”+“条形码”+“文本”+“列名称”\u标题
+“文本”+“列名称”+“数量”+“整数”+“列名称”\u类别
+“文本”+”;“;
公共项目数据库(上下文){
this.context=上下文;
//创建或打开数据库
ItemDatabaseHelper=新的ItemDatabaseHelper(上下文);
this.db=helper.getWritableDatabase();
}
public void addRow(字符串rowStringOne、字符串rowStringTwo、,
字符串rowStringThree、字符串rowStringThree、整数rowIntFive){
//这是android的SQLite函数使用的键值对持有者
ContentValues=新的ContentValues();
value.put(列\名称\日期,rowStringOne);
value.put(列\名称\条形码,第二行);
value.put(列\名称\标题,第三行);
value.put(列\名称\类别,第四行);
value.put(列\名称\数量,第五行);
//要求数据库对象插入新数据
试一试{
db.insert(表名称,空,值);
}捕获(例外e){
Log.e(“DB ERROR”,e.toString());
e、 printStackTrace();
}
}
public void updateRow(长rowID、字符串rowStringOne、字符串rowStringTwo、,
字符串行三,整数行四){
//这是android的SQLite函数使用的键值对持有者
ContentValues=新的ContentValues();
value.put(列\名称\日期,rowStringOne);
value.put(列\名称\条形码,第二行);
value.put(列\名称\标题,第三行);
value.put(列\名称\数量,第四行);
//要求数据库对象更新给定rowID的数据库行
试一试{
更新(表名、值、列名、条目ID+“=”+rowID、,
无效);
}捕获(例外e){
Log.e(“DB Error”,e.toString());
e、 printStackTrace();
}
}
public void deleteRow(长rowID){
//要求数据库管理器删除给定id的行
试一试{
db.delete(表名、列名、条目ID+“=”+rowID,null);
getAllRowsAsArrays();
}捕获(例外e){
Log.e(“DB ERROR”,e.toString());
e、 printStackTrace();
}
}
公共阵列列表GetCategoryOfarray(字符串类别){
//创建一个ArrayList,它将保存从中收集的所有数据
//数据库。
ArrayList dataArrays=新的ArrayList();
//这是一个创建“游标”对象的数据库调用。
//游标对象存储从
//数据库,用于遍历数据。
光标;
试一试{
//要求数据库对象创建游标。
cursor=db.query(表名称,新字符串[]{COLUMN名称\日期,
列名称、列名称、列数量、,
列_NAME_CATEGORY},列_NAME_CATEGORY+“=”
+类别+“'”,空,空,空,列名称
+“ASC”);
//将光标指针移到零位置。
cursor.moveToFirst();
//如果当前光标位置后有数据,请将其添加到
//ArrayList。
如果(!cursor.isAfterLast()){
做{
ArrayList dataList=新的ArrayList();
dataList.add(cursor.getString(cursor
.getColumnIndex(列名称和日期));
dataList.add(cursor.getString(cursor
.getColumnIndex(列名称和标题));
dataList.add(cursor.getInt(cursor
.getColumnIndex(列名称和数量