Go Back   Android Forums > Android Discussion > Android Lounge
Android Lounge A place for general Android discussion and questions.

Get excited for the Samsung Galaxy S5! Find everything you need and discuss it in our Galaxy S5 Forum!

test: Reply
 
LinkBack Thread Tools
Old December 3rd, 2011, 11:09 AM   #1 (permalink)
New Member
Thread Author (OP)
 
Join Date: Dec 2011
Posts: 1
 
Device(s):
Carrier: Not Provided

Thanks: 0
Thanked 0 Times in 0 Posts
Default Notepad3 Tutorial Adding a ratingbar

I've completed the Notepad Tutorials from the Devs website and now I'm trying to figure it out how to add new things.This time I"m looking to define a rating bar that will be present in the edit/add notes section and will allow the user to rate the note/s.I've tried to define it in the code but the program will crash,you will see the attempt when I present the code.I have been unable to find any examples on the net, of how to take the RatingBar and add it as a value to theSQLite database.So obviously my question is how can I write the code for the rating bar's implementation?Thank you.

Notepad3 class:



Code:
 package com.android.demo.notepad3;
    
    import android.app.ListActivity;
    import android.content.Intent;
    import android.database.Cursor;
    import android.os.Bundle;
    import android.view.ContextMenu;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.View;
    import android.view.ContextMenu.ContextMenuInfo;
    import android.widget.ListView;
    
    import android.widget.SimpleCursorAdapter;
    import android.widget.AdapterView.AdapterContextMenuInfo;
    
    
    public class Notepadv3 extends ListActivity {
        private static final int ACTIVITY_CREATE=0;
        private static final int ACTIVITY_EDIT=1;
    
        private static final int INSERT_ID = Menu.FIRST;
        private static final int DELETE_ID = Menu.FIRST + 1;
    
        private NotesDbAdapter mDbHelper;
    
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.notes_list);
            mDbHelper = new NotesDbAdapter(this);
            mDbHelper.open();
            fillData();
            registerForContextMenu(getListView());
           
        }
    
        private void fillData() {
            Cursor notesCursor = mDbHelper.fetchAllNotes();
            startManagingCursor(notesCursor);
    
            // Create an array to specify the fields we want to display in the list (only TITLE)
            String[] from = new String[]{NotesDbAdapter.KEY_TITLE,NotesDbAdapter.KEY_BODY,NotesDbAdapter.KEY_RATING};
    
            // and an array of the fields we want to bind those fields to (in this case just text1)
            int[] to = new int[]{R.id.text1,R.id.text2,R.id.ratingbar};
    
            // Now create a simple cursor adapter and set it to display
            SimpleCursorAdapter notes = 
                new SimpleCursorAdapter(this, R.layout.notes_row, notesCursor, from, to);
            setListAdapter(notes);
        }
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            super.onCreateOptionsMenu(menu);
            menu.add(0, INSERT_ID, 0, R.string.menu_insert);
            return true;
        }
    
        @Override
        public boolean onMenuItemSelected(int featureId, MenuItem item) {
            switch(item.getItemId()) {
                case INSERT_ID:
                    createNote();
                    return true;
            }
    
            return super.onMenuItemSelected(featureId, item);
        }
    
        @Override
        public void onCreateContextMenu(ContextMenu menu, View v,
                ContextMenuInfo menuInfo) {
            super.onCreateContextMenu(menu, v, menuInfo);
            menu.add(0, DELETE_ID, 0, R.string.menu_delete);
        }
    
        @Override
        public boolean onContextItemSelected(MenuItem item) {
            switch(item.getItemId()) {
                case DELETE_ID:
                    AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
                    mDbHelper.deleteNote(info.id);
                    fillData();
                    return true;
            }
            return super.onContextItemSelected(item);
        }
    
        private void createNote() {
            Intent i = new Intent(this, NoteEdit.class);
            startActivityForResult(i, ACTIVITY_CREATE);
        }
    
        @Override
        protected void onListItemClick(ListView l, View v, int position, long id) {
            super.onListItemClick(l, v, position, id);
            Intent i = new Intent(this, NoteEdit.class);
            i.putExtra(NotesDbAdapter.KEY_ROWID, id);
            startActivityForResult(i, ACTIVITY_EDIT);
        }
    
        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
            super.onActivityResult(requestCode, resultCode, intent);
            fillData();
        }
    }
NoteEdit class:

Code:
package com.android.demo.notepad3;
    
    import android.app.Activity;
    import android.database.Cursor;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.RatingBar;
    
    public class NoteEdit extends Activity {
    
        private EditText mTitleText;
        private EditText mBodyText;
        private Long mRowId;
        private NotesDbAdapter mDbHelper;
        private RatingBar mRatingBar;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            mDbHelper = new NotesDbAdapter(this);
            mDbHelper.open();
    
            setContentView(R.layout.note_edit);
            setTitle(R.string.edit_note);
    
            mTitleText = (EditText) findViewById(R.id.title);
            mBodyText = (EditText) findViewById(R.id.body);
            mRatingBar= (RatingBar) findViewById(R.id.ratingbar);
    
            Button confirmButton = (Button) findViewById(R.id.confirm);
    
            mRowId = (savedInstanceState == null) ? null :
                (Long) savedInstanceState.getSerializable(NotesDbAdapter.KEY_ROWID);
            if (mRowId == null) {
                Bundle extras = getIntent().getExtras();
                mRowId = extras != null ? extras.getLong(NotesDbAdapter.KEY_ROWID)
                                        : null;
            }
    
            populateFields();
    
            confirmButton.setOnClickListener(new View.OnClickListener() {
    
                public void onClick(View view) {
                    setResult(RESULT_OK);
                    finish();
                }
    
            });
        }
    
        private void populateFields() {
            if (mRowId != null) {
                Cursor note = mDbHelper.fetchNote(mRowId);
                startManagingCursor(note);
                mTitleText.setText(note.getString(
                        note.getColumnIndexOrThrow(NotesDbAdapter.KEY_TITLE)));
                mBodyText.setText(note.getString(
                        note.getColumnIndexOrThrow(NotesDbAdapter.KEY_BODY)));
                mRatingBar.setRating(note.getFloat(
                        note.getColumnIndexOrThrow(NotesDbAdapter.KEY_RATING)));
                
            }
        }
    
        @Override
        protected void onSaveInstanceState(Bundle outState) {
            super.onSaveInstanceState(outState);
            saveState();
            outState.putSerializable(NotesDbAdapter.KEY_ROWID, mRowId);
        }
    
        @Override
        protected void onPause() {
            super.onPause();
            saveState();
        }
    
        @Override
        protected void onResume() {
            super.onResume();
            populateFields();
        }
    
        private void saveState() {
            String title = mTitleText.getText().toString();
            String body = mBodyText.getText().toString();
            Float rating = mRatingBar.getRating();
    
            if (mRowId == null) {
                long id = mDbHelper.createNote(title, body,rating);
                if (id > 0) {
                    mRowId = id;
                }
            } else {
                mDbHelper.updateNote(mRowId, title, body,rating);
            }
        }
    
    }
NotesDBAdabpter class:

Code:
package com.android.demo.notepad3;
    
    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 class NotesDbAdapter {
    
        public static final String KEY_TITLE = "title";
        public static final String KEY_BODY = "body";
        public static final String KEY_RATING = "rating";
        public static final String KEY_ROWID = "_id";
    
        private static final String TAG = "NotesDbAdapter";
        private DatabaseHelper mDbHelper;
        private SQLiteDatabase mDb;
    
        /**
         * Database creation sql statement
         */
        private static final String DATABASE_CREATE =
            "create table notes (_id integer primary key autoincrement, "
            + "title text not null, body text not null,rating not null);";
    
        private static final String DATABASE_NAME = "data";
        private static final String DATABASE_TABLE = "notes";
        private static final int DATABASE_VERSION = 5;
    
        private final Context mCtx;
        
    
        private static class DatabaseHelper extends SQLiteOpenHelper {
    
            DatabaseHelper(Context context) {
                super(context, DATABASE_NAME, null, DATABASE_VERSION);
            }
    
            @Override
            public void onCreate(SQLiteDatabase db) {
    
                db.execSQL(DATABASE_CREATE);
                insertNotes(db);
            }
    
            @Override
            public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
                Log.w(TAG, "Upgrading database from version " + oldVersion + " to "
                        + newVersion + ", which will destroy all old data");
                db.execSQL("DROP TABLE IF EXISTS notes");
               
                onCreate(db);
            }
        }
    
        /**
         * Constructor - takes the context to allow the database to be
         * opened/created
         * 
         * @param ctx the Context within which to work
         */
        public NotesDbAdapter(Context ctx) {
            this.mCtx = ctx;
        }
    
        /**
         * Open the notes database. If it cannot be opened, try to create a new
         * instance of the database. If it cannot be created, throw an exception to
         * signal the failure
         * 
         * @return this (self reference, allowing this to be chained in an
         *         initialization call)
         * @throws SQLException if the database could be neither opened or created
         */
        public NotesDbAdapter open() throws SQLException {
            mDbHelper = new DatabaseHelper(mCtx);
            mDb = mDbHelper.getWritableDatabase();
            return this;
        }
    
        public void close() {
            mDbHelper.close();
        }
    
    
        /**
         * Create a new note using the title and body provided. If the note is
         * successfully created return the new rowId for that note, otherwise return
         * a -1 to indicate failure.
         * 
         * @param title the title of the note
         * @param body the body of the note
         * @return rowId or -1 if failed
         */
        public long createNote(String title, String body,Float rating) {
            ContentValues initialValues = new ContentValues();
            initialValues.put(KEY_TITLE, title);
            initialValues.put(KEY_BODY, body);
            initialValues.put(KEY_RATING, rating);
            
    
            return mDb.insert(DATABASE_TABLE, null, initialValues);
        }
    
        /**
         * Delete the note with the given rowId
         * 
         * @param rowId id of note to delete
         * @return true if deleted, false otherwise
         */
        public boolean deleteNote(long rowId) {
    
            return mDb.delete(DATABASE_TABLE, KEY_ROWID + "=" + rowId, null) > 0;
        }
    
        /**
         * Return a Cursor over the list of all notes in the database
         * 
         * @return Cursor over all notes
         */
        public Cursor fetchAllNotes() {
    
            return mDb.query(DATABASE_TABLE, new String[] {KEY_ROWID, KEY_TITLE,
                    KEY_BODY,KEY_RATING}, null, null, null, null, null);
        }
    
        /**
         * Return a Cursor positioned at the note that matches the given rowId
         * 
         * @param rowId id of note to retrieve
         * @return Cursor positioned to matching note, if found
         * @throws SQLException if note could not be found/retrieved
         */
        public Cursor fetchNote(long rowId) throws SQLException {
    
            Cursor mCursor =
    
                mDb.query(true, DATABASE_TABLE, new String[] {KEY_ROWID,
                        KEY_TITLE, KEY_BODY,KEY_RATING}, KEY_ROWID + "=" + rowId, null,
                        null, null, null, null);
            if (mCursor != null) {
                mCursor.moveToFirst();
            }
            return mCursor;
    
        }
    
        /**
         * Update the note using the details provided. The note to be updated is
         * specified using the rowId, and it is altered to use the title and body
         * values passed in
         * 
         * @param rowId id of note to update
         * @param title value to set note title to
         * @param body value to set note body to
         * @return true if the note was successfully updated, false otherwise
         */
        public boolean updateNote(long rowId, String title, String body,Float rating) {
            ContentValues args = new ContentValues();
            args.put(KEY_TITLE, title);
            args.put(KEY_BODY, body);
            args.put(KEY_RATING, rating);
    
            return mDb.update(DATABASE_TABLE, args, KEY_ROWID + "=" + rowId, null) > 0;
        }
        private static void insertNotes(SQLiteDatabase db){
            
        }
    
    }

StefanKos is offline  
Reply With Quote
sponsored links
Reply


Go Back   Android Forums > Android Discussion > Android Lounge
Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On



All times are GMT -5. The time now is 05:43 AM.
Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2014, vBulletin Solutions, Inc.