Blog purpose for android basic example for android app developer. any query please my contact

Sunday 22 October 2023

How to Create Grade Report Using Content Providers in Android

 How to Create Grade Report Using Content Providers in Android


Today In this Tutorial Learn How To Create Grade Report Using Content Providers in Android


1.MainActivity.java:


import android.app.Activity;

import android.content.ContentValues;

import android.database.Cursor;

import android.net.Uri;

import android.os.Bundle;

import android.view.Menu;

import android.view.View;

import android.widget.EditText;

import android.widget.Toast;

 

public class MainActivity extends Activity {

 

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

    }

 

    @Override

    public boolean onCreateOptionsMenu(Menu menu) {

        getMenuInflater().inflate(R.menu.main, menu);

        return true;

    }

 

    public void onClickAddRecord(View view) {

        // Adding a new record

        ContentValues values = new ContentValues();

 

        values.put(ReportProvider.NAME,

                ((EditText) findViewById(R.id.CourseName)).getText().toString());

 

        values.put(ReportProvider.GRADE,

                ((EditText) findViewById(R.id.txtGrade)).getText().toString());

 

        Uri uri = getContentResolver().insert(ReportProvider.CONTENT_URI,

                values);

 

        Toast.makeText(getBaseContext(), uri.toString(), Toast.LENGTH_LONG)

                .show();

    }

 

    public void onClickRetrieveRecords(View view) {

        // Retrieve all records

        String URL = "content://com.example.provider.Report/students";

        Uri var = Uri.parse(URL);

        Cursor c = managedQuery(var, null, null, null, "name");

        if (c.moveToFirst()) {

            do {

                Toast.makeText(

                        this,

                        c.getString(c.getColumnIndex(ReportProvider._ID))

                                + ", "

                                + c.getString(c

                                        .getColumnIndex(ReportProvider.NAME))

                                + ", "

                                + c.getString(c

                                        .getColumnIndex(ReportProvider.GRADE)),

                        Toast.LENGTH_SHORT).show();

            } while (c.moveToNext());

        }

    }

 

}




2.ReportProvider.java:


import java.util.HashMap;

 

import android.content.ContentProvider;

import android.content.ContentUris;

import android.content.ContentValues;

import android.content.Context;

import android.content.UriMatcher;

import android.database.Cursor;

import android.database.SQLException;

import android.database.sqlite.SQLiteDatabase;

import android.database.sqlite.SQLiteOpenHelper;

import android.database.sqlite.SQLiteQueryBuilder;

import android.net.Uri;

import android.text.TextUtils;

 

public class ReportProvider extends ContentProvider {

 

    static final String PROVIDER_NAME = "com.example.provider.Report";

    static final String URL = "content://" + PROVIDER_NAME + "/students";

    static final Uri CONTENT_URI = Uri.parse(URL);

 

    static final String _ID = "_id";

    static final String NAME = "name";

    static final String GRADE = "grade";

 

    private static HashMap<String, String> PROJECTION_MAP;

 

    static final int STUDENTS = 1;

    static final int STUDENT_ID = 2;

 

    static final UriMatcher uriMatcher;

    static {

        uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);

        uriMatcher.addURI(PROVIDER_NAME, "students", STUDENTS);

        uriMatcher.addURI(PROVIDER_NAME, "students/#", STUDENT_ID);

    }

 

    private SQLiteDatabase db;

    static final String DATABASE_NAME = "College";

    static final String TABLE_NAME = "students";

    static final int DATABASE_VERSION = 1;

    static final String CREATE_DB_TABLE = " CREATE TABLE "

            + TABLE_NAME + " (_id INTEGER PRIMARY KEY AUTOINCREMENT, "

            + " name TEXT NOT NULL, " + " grade TEXT NOT NULL);";

 

    private static class DatabaseHelper extends SQLiteOpenHelper {

        DatabaseHelper(Context context) {

            super(context, DATABASE_NAME, null, DATABASE_VERSION);

        }

 

        @Override

        public void onCreate(SQLiteDatabase db) {

            db.execSQL(CREATE_DB_TABLE);

        }

 

        @Override

        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

            db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);

            onCreate(db);

        }

    }

 

    @Override

    public boolean onCreate() {

        Context context = getContext();

        DatabaseHelper dbHelper = new DatabaseHelper(context);

        /*

         * Create a write-able database and would create it if the database

         * dosen't exists already

         */

        db = dbHelper.getWritableDatabase();

        return (db == null) ? false : true;

    }

 

    @Override

    public Uri insert(Uri uri, ContentValues values) {

        /*

         * Add a new student

         */

        long rowID = db.insert(TABLE_NAME, "", values);

        /*

         * If record is added successfully

         */

        if (rowID > 0) {

            Uri _uri = ContentUris.withAppendedId(CONTENT_URI, rowID);

            getContext().getContentResolver().notifyChange(_uri, null);

            return _uri;

        }

        throw new SQLException("Failed to add a record into " + uri);

    }

 

    @Override

    public Cursor query(Uri uri, String[] projection, String selection,

            String[] selectionArgs, String sortOrder) {

 

        SQLiteQueryBuilder qb = new SQLiteQueryBuilder();

        qb.setTables(TABLE_NAME);

 

        switch (uriMatcher.match(uri)) {

        case STUDENTS:

            qb.setProjectionMap(PROJECTION_MAP);

            break;

        case STUDENT_ID:

            qb.appendWhere(_ID + "=" + uri.getPathSegments().get(1));

            break;

        default:

            throw new IllegalArgumentException("Unknown URI " + uri);

        }

        if (sortOrder == null || sortOrder == "") {

            // sort on the name of the courses

            sortOrder = NAME;

        }

        Cursor c = qb.query(db, projection, selection, selectionArgs, null,

                null, sortOrder);

 

        c.setNotificationUri(getContext().getContentResolver(), uri);

 

        return c;

    }

 

    @Override

    public int delete(Uri uri, String selection, String[] selectionArgs) {

        int count = 0;

 

        switch (uriMatcher.match(uri)) {

        case STUDENTS:

            count = db.delete(TABLE_NAME, selection, selectionArgs);

            break;

        case STUDENT_ID:

            String id = uri.getPathSegments().get(1);

            count = db.delete(TABLE_NAME, _ID

                    + " = "

                    + id

                    + (!TextUtils.isEmpty(selection) ? " AND (" + selection

                            + ')' : ""), selectionArgs);

            break;

        default:

            throw new IllegalArgumentException("Unknown URI " + uri);

        }

 

        getContext().getContentResolver().notifyChange(uri, null);

        return count;

    }

 

    @Override

    public int update(Uri uri, ContentValues values, String selection,

            String[] selectionArgs) {

        int count = 0;

 

        switch (uriMatcher.match(uri)) {

        case STUDENTS:

            count = db.update(TABLE_NAME, values, selection,

                    selectionArgs);

            break;

        case STUDENT_ID:

            count = db.update(

                    TABLE_NAME,

                    values,

                    _ID

                            + " = "

                            + uri.getPathSegments().get(1)

                            + (!TextUtils.isEmpty(selection) ? " AND ("

                                    + selection + ')' : ""), selectionArgs);

            break;

        default:

            throw new IllegalArgumentException("Unknown URI " + uri);

        }

        getContext().getContentResolver().notifyChange(uri, null);

        return count;

    }

 

    @Override

    public String getType(Uri uri) {

        switch (uriMatcher.match(uri)) {

        /**

         * Get all records

         */

        case STUDENTS:

            return "vnd.android.cursor.dir/vnd.example.students";

            /**

             * Get a particular record

             */

        case STUDENT_ID:

            return "vnd.android.cursor.item/vnd.example.students";

        default:

            throw new IllegalArgumentException("Unsupported URI: " + uri);

        }

    }

}



3.activity_main.xml:


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    android:orientation="vertical" >

 

    <TextView

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:text="Subject/Course" />

 

    <EditText

        android:id="@+id/CourseName"

        android:layout_width="fill_parent"

        android:layout_height="wrap_content" />

 

    <TextView

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:text="Grade" />

 

    <EditText

        android:id="@+id/txtGrade"

        android:layout_width="fill_parent"

        android:layout_height="wrap_content" />

 

    <Button

        android:id="@+id/btnAdd"

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:onClick="onClickAddRecord"

        android:text="Add " />

 

    <Button

        android:id="@+id/btnRetrieve"

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:onClick="onClickRetrieveRecords"

        android:text="Retrieve " />

 

</LinearLayout>



4.String.xml:

<String Name="App Name">Report App </String>


No comments:

Post a Comment