OffLine Data Display in Android using webservice

===============Dependency===============

compile 'com.squareup.retrofit:retrofit:1.9.0'compile 'com.squareup.retrofit2:retrofit:2.2.0'compile 'com.squareup.retrofit2:converter-gson:2.2.0'compile 'com.android.support:design:25.3.1'compile 'com.android.support:recyclerview-v7:25.3.1'
 
===============Main Activity XML===============

<?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="match_parent"    android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    android:id="@+id/snek_status_language"    tools:context="com.example.hp.offline_retrofit_getdata_display.MainActivity">


    <android.support.v7.widget.RecyclerView        android:layout_width="match_parent"        android:layout_height="match_parent"        android:id="@+id/rv_1">

    </android.support.v7.widget.RecyclerView>
</RelativeLayout>

===============Main Activity JAVA===============

package com.example.hp.offline_retrofit_getdata_display;

import android.accounts.Account;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.DefaultItemAnimator;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.View;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;

import com.example.hp.offline_retrofit_getdata_display.Adepter.RV_lang_adepter;
import com.example.hp.offline_retrofit_getdata_display.Model.Sqllite_model_festival;
import com.example.hp.offline_retrofit_getdata_display.Model.model_language;
import com.example.hp.offline_retrofit_getdata_display.helper.Appconf;
import com.example.hp.offline_retrofit_getdata_display.helper.DatabaseHelpher;

import java.io.BufferedInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;

import retrofit.Callback;
import retrofit.RestAdapter;
import retrofit.RetrofitError;
import retrofit.client.Response;

public class MainActivity extends AppCompatActivity {

    private RecyclerView rv_1;
    String BASE_URL = "http://sktechnocast.com/";
    private DatabaseHelpher dbhalper;
    private RelativeLayout snek_status_all;
    private boolean isConnected = false;
    private model_language display;
    private RV_lang_adepter mActiv;
    public URL url;

    private BroadcastReceiver myReceiver = new BroadcastReceiver() {
        @Override        public void onReceive(Context context, Intent intent) {

            isNetworkAvailable(context);
        }
    };
    private Bitmap image_bitmap;


    private boolean isNetworkAvailable(Context context) {

        snek_status_all = (RelativeLayout) findViewById(R.id.snek_status_language);

        ConnectivityManager connectivity = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        if (connectivity != null) {
            NetworkInfo[] info = connectivity.getAllNetworkInfo();
            if (info != null) {
                for (int i = 0; i < info.length; i++) {
                    if (info[i].getState() == NetworkInfo.State.CONNECTED) {
                        if (!isConnected) {

                            getdata();

                            isConnected = true;
                        }
                        return true;
                    }
                }
            }
        }

        mActiv = new RV_lang_adepter(dbhalper.getDataFromDB());
        rv_1.setAdapter(mActiv);


        Snackbar snackbar = Snackbar.make(snek_status_all, "No internet connection!", Snackbar.LENGTH_LONG);
        View sbView = snackbar.getView();
        TextView textView = (TextView) sbView.findViewById(android.support.design.R.id.snackbar_text);
        textView.setTextColor(Color.YELLOW);
        snackbar.show();

        isConnected = false;
        return false;
    }


    @Override    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        IntentFilter filter = new IntentFilter("android.net.conn.CONNECTIVITY_CHANGE");
        getApplicationContext().registerReceiver(myReceiver, filter);

        dbhalper = new DatabaseHelpher(MainActivity.this);

        rv_1 = (RecyclerView) findViewById(R.id.rv_1);

        GridLayoutManager aaa = new GridLayoutManager(getApplicationContext(), 1);
        rv_1.setLayoutManager(aaa);
        rv_1.setItemAnimator(new DefaultItemAnimator());


    }

    public void getdata() {

        RestAdapter adapter = new RestAdapter.Builder().setEndpoint(BASE_URL).build();

        Appconf.status_lang api = adapter.create(Appconf.status_lang.class);
        api.redadada(

                new Callback<model_language>() {

                    @Override                    public void success(model_language model_language, Response response) {

                        if (model_language.getSuccess() == "true") {
                            display = model_language;

                            ArrayList<Sqllite_model_festival> sql_arraydata = new ArrayList<Sqllite_model_festival>();

                            dbhalper.deleteall();
                            for (int i = 0; i < display.getGetresult_array().size(); i++) {
                                String category_id = display.getGetresult_array().get(i).getCategory_id();
                                String sub_category_name = display.getGetresult_array().get(i).getCategory_name();
                                String sub_tmp_image = display.getGetresult_array().get(i).getTmp_image();


                                try {
                                     url = new URL(sub_tmp_image);
                                     image_bitmap = BitmapFactory.decodeStream(url.openConnection().getInputStream());
                                } catch(IOException e) {
                                    System.out.println(e);
                                }


                            //   Toast.makeText(MainActivity.this, "a image"+sub_tmp_image, Toast.LENGTH_SHORT).show();                                Toast.makeText(MainActivity.this, "a bitmapdata "+sub_tmp_image, Toast.LENGTH_SHORT).show();


                                Sqllite_model_festival data_insert_values_model = new Sqllite_model_festival();

                                data_insert_values_model.setSub_category_id(category_id);
                                data_insert_values_model.setSub_category_name(sub_category_name);
                           //     data_insert_values_model.setSub_category_name(sub_tmp_image);

                                sql_arraydata.add(data_insert_values_model);
                                dbhalper.InsertDb_festival(data_insert_values_model);

                            }

                            mActiv = new RV_lang_adepter(sql_arraydata);
                            rv_1.setAdapter(mActiv);

                        } else {
                            Toast.makeText(MainActivity.this, "not Found", Toast.LENGTH_SHORT).show();
                        }
                    }


                    @Override                    public void failure(RetrofitError error) {

                    }
                }
        );
    }

/*
    byte[] logoImage = getLogoImage(IMAGEURL);
    private byte[] getLogoImage(String url){        try {            URL imageUrl = new URL(url);            URLConnection ucon = imageUrl.openConnection();
            InputStream is = ucon.getInputStream();            BufferedInputStream bis = new BufferedInputStream(is);
            ByteArrayBuffer baf = new ByteArrayBuffer(500);            int current = 0;            while ((current = bis.read()) != -1) {                baf.append((byte) current);            }
            return baf.toByteArray();        } catch (Exception e) {            Log.d("ImageManager", "Error: " + e.toString());        }        return null;    }

    public void insertUser(){        SQLiteDatabase db               =   dbHelper.getWritableDatabase();
        String delSql                       =   "DELETE FROM ACCOUNTS";        SQLiteStatement delStmt         =   db.compileStatement(delSql);        delStmt.execute();
        String sql                      =   "INSERT INTO ACCOUNTS (account_id,account_name,account_image) VALUES(?,?,?)";        SQLiteStatement insertStmt      =   db.compileStatement(sql);        insertStmt.clearBindings();        insertStmt.bindString(1, Integer.toString(this.accId));        insertStmt.bindString(2,this.accName);        insertStmt.bindBlob(3, this.accImage);        insertStmt.executeInsert();        db.close();    }


    public Account getCurrentAccount() {        SQLiteDatabase db       =   dbHelper.getWritableDatabase();        String sql              =   "SELECT * FROM ACCOUNTS";        Cursor cursor           =   db.rawQuery(sql, new String[] {});
        if(cursor.moveToFirst()){            this.accId             = cursor.getInt(0);            this.accName           = cursor.getString(1);            this.accImage          = cursor.getBlob(2);        }        if (cursor != null && !cursor.isClosed()) {            cursor.close();        }        db.close();        if(cursor.getCount() == 0){            return null;        } else {            return this;        }    }
    logoImage.setImageBitmap(BitmapFactory.decodeByteArray( currentAccount.accImage.length))}*/}


===============Custome Adepter===============

package com.example.hp.offline_retrofit_getdata_display.Adepter;

import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;


import com.example.hp.offline_retrofit_getdata_display.Model.Sqllite_model_festival;
import com.example.hp.offline_retrofit_getdata_display.R;

import java.util.ArrayList;

/** * Created by hp on 6/23/2018. */public class RV_lang_adepter extends RecyclerView.Adapter<RV_lang_adepter.MyHolderView> {

    private View view;
    private Context context;
    // (1)----------------- this is mod_language is ony used model class but sqllite userd then this model calls array used    //  private model_language Mod_lang;
    private ArrayList<Sqllite_model_festival> Mod_lang;



    @Override    public MyHolderView onCreateViewHolder(ViewGroup parent, int viewType) {

        view = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_festival,parent,false);
        context =view.getContext();
        return new MyHolderView(view);
    }

    // public  RV_lang_adepter(model_language mm){    //(2)---------------- this is model used for sqllite aray formet----------- then used another upervadu use thase    public  RV_lang_adepter(ArrayList<Sqllite_model_festival> mm){
        this.Mod_lang = mm;
    }

    @Override    public void onBindViewHolder(RV_lang_adepter.MyHolderView holder, int position) {

        //  holder.txt_name.setText(Mod_lang.getGetresult_array().get(position).getCategory_name());        //(3)--------------------- this is getGetresult_array used nai thay because sql no array call thse so not used
        holder.txt_name.setText(Mod_lang.get(position).getSub_category_name());

     //   byte[] image = cursor.getBlob(1);
        Toast.makeText(context, "image"+Mod_lang.get(position).getSub_tmp_image(), Toast.LENGTH_SHORT).show();
    }

    @Override    public int getItemCount() {
        return Mod_lang.size() ;
    }

    public class MyHolderView extends RecyclerView.ViewHolder {
        private final TextView txt_name;

        public MyHolderView(View view) {
            super(view);

            txt_name = (TextView) view.findViewById(R.id.txt_name);
        }
    }
}


=============== Model Class url===============

 package com.example.hp.offline_retrofit_getdata_display.Model;

import com.google.gson.annotations.SerializedName;

import java.util.ArrayList;

/** * Created by hp on 6/23/2018. */public class model_language {

    @SerializedName("status")
    private String success;

    public String getSuccess() {
        return success;
    }

    public void setSuccess(String success) {
        this.success = success;
    }

    @SerializedName("data")
    private ArrayList<language_array> getresult_array = new ArrayList<>();



    public ArrayList<language_array> getGetresult_array() {
        return getresult_array;
    }

    public void setGetresult_array(ArrayList<language_array> getresult_array) {
        this.getresult_array = getresult_array;
    }


    public static class  language_array{

        @SerializedName("category_id")
        private String category_id;

        @SerializedName("sub_category_name")
        private String category_name;

        @SerializedName("tmp_image")
        private String tmp_image;

        public String getTmp_image() {
            return tmp_image;
        }

        public void setTmp_image(String tmp_image) {
            this.tmp_image = tmp_image;
        }

        public String getCategory_id() {
            return category_id;
        }

        public void setCategory_id(String category_id) {
            this.category_id = category_id;
        }

        public String getCategory_name() {
            return category_name;
        }

        public void setCategory_name(String category_name) {
            this.category_name = category_name;
        }



    }
}

=============== Model Class Sql===============

package com.example.hp.offline_retrofit_getdata_display.Model;

/** * Created by hp on 6/23/2018. */public class Sqllite_model_festival {

       private String sub_category_id;
        private String sub_category_name;

    public String getSub_tmp_image() {
        return sub_tmp_image;
    }

    public void setSub_tmp_image(String sub_tmp_image) {
        this.sub_tmp_image = sub_tmp_image;
    }

    private String sub_tmp_image;


    public String getSub_category_id() {
        return sub_category_id;
    }

    public void setSub_category_id(String sub_category_id) {
        this.sub_category_id = sub_category_id;
    }

    public String getSub_category_name() {
        return sub_category_name;
    }

    public void setSub_category_name(String sub_category_name) {
        this.sub_category_name = sub_category_name;
    }
}



=============== DatabaseHelper===============

package com.example.hp.offline_retrofit_getdata_display.helper;

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

import com.example.hp.offline_retrofit_getdata_display.Model.Sqllite_model_festival;

import java.util.ArrayList;

/** * Created by hp on 6/23/2018. */
public class DatabaseHelpher extends SQLiteOpenHelper {

    private static final String DATABASE_NAME="gsm";
    private static final int DATABASE_VERSION = 2;
    private static final String GSM_TABLE = "data";
    private static final String TABLE_FESTIVAL = "dataa";

    private static final String FESTIVAL_TABLE = "create table "+TABLE_FESTIVAL +"(id INTEGER primary key AUTOINCREMENT,sub_category_id INTEGER,sub_category_name TEXT)";
   // private static final String STU_TABLE = "create table "+GSM_TABLE +"(id INTEGER primary key AUTOINCREMENT,id_lang INTEGER,name_lang TEXT)";
    Context context;

    public DatabaseHelpher(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
        this.context = context;
    }

    @Override    public void onCreate(SQLiteDatabase db) {
        db.execSQL(FESTIVAL_TABLE);

    }

    @Override    public void onUpgrade(SQLiteDatabase db, int i, int i1) {

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

    }

    public void InsertDb_festival(Sqllite_model_festival data_insert_values_model)
    {
        Log.d("insert", "before insert");
        SQLiteDatabase db = this.getWritableDatabase();

        ContentValues values = new ContentValues();
        values.put("sub_category_id",data_insert_values_model.getSub_category_id());
        values.put("sub_category_name",data_insert_values_model.getSub_category_name());
     //   values.put("sub_tmp_image",data_insert_values_model.getSub_tmp_image());        db.insert(TABLE_FESTIVAL,null,values);
        db.close();

        Toast.makeText(context, "insert value", Toast.LENGTH_LONG);

    }


// --------  DELETE ALL -----------------
    public void deleteall(){
        SQLiteDatabase db = this.getWritableDatabase();
        db.execSQL("DELETE FROM "+ TABLE_FESTIVAL);
        db.close();

    }
/*
    *//* Retrive  data from database *//*
    public ArrayList<Sqllite_model_festival> getDataFromDB(){
        ArrayList<Sqllite_model_festival> modelList = new ArrayList<Sqllite_model_festival>();        String query = "select* from "+TABLE_FESTIVAL ;
        SQLiteDatabase db = this.getWritableDatabase();        Cursor cursor = db.rawQuery(query,null);
        if (cursor.moveToFirst()){            do {                Sqllite_model_festival model = new Sqllite_model_festival();
                //model.setId(cursor.getInt(0));                model.setSub_category_id(cursor.getString(1));                model.setSub_category_name(cursor.getString(2));
                modelList.add(model);
            }while (cursor.moveToNext());        }
        Log.d("student data", modelList.toString());
        return modelList;    }*/
    public ArrayList<Sqllite_model_festival>getDataFromDB(){

        ArrayList<Sqllite_model_festival>sql_qrray = new ArrayList<Sqllite_model_festival>();
        String quary ="select * from "+TABLE_FESTIVAL;
        SQLiteDatabase db =this.getWritableDatabase();
        Cursor cursor = db.rawQuery(quary,null);

        if(cursor.moveToFirst()){
            do {
                Sqllite_model_festival model_obj = new Sqllite_model_festival();

                model_obj.setSub_category_id(cursor.getString(1));
                model_obj.setSub_category_name(cursor.getString(2));
           //     model_obj.setSub_tmp_image(cursor.getString(3));
                sql_qrray.add(model_obj);
            }
            while (cursor.moveToNext());

        }
        Log.d("student data", sql_qrray.toString());
        return sql_qrray;
    }
}

==================App Config==========

package com.example.hp.offline_retrofit_getdata_display.helper;


import com.example.hp.offline_retrofit_getdata_display.Model.model_language;

import retrofit.Callback;
import retrofit.http.GET;


/** * Created by hp on 6/23/2018. */public class Appconf {


    public interface status_lang{
        @GET("/android/status/offline_getdata_recyclerview.php")
        void redadada(Callback<model_language> callback);
    }
}

Comments

Popular posts from this blog

retrofil gjstatus lanuage

form object

Login Preference in android create class