Friday, December 25, 2020

get data in activity

 package com.gkmaza.gujarati;


import android.annotation.SuppressLint;

import android.content.Context;

import android.content.Intent;

import android.database.Cursor;

import android.database.sqlite.SQLiteDatabase;

import android.graphics.Color;

import android.net.Uri;

import android.os.Bundle;

import android.os.Handler;

import android.util.Log;

import android.view.Menu;

import android.view.MenuItem;

import android.view.View;

import android.widget.TextView;

import android.widget.Toast;


import com.getbase.floatingactionbutton.FloatingActionButton;

import com.google.android.gms.ads.AdRequest;

import com.google.android.gms.ads.AdView;

import com.google.android.gms.ads.InterstitialAd;

import com.google.android.gms.ads.MobileAds;

import com.google.android.gms.ads.initialization.InitializationStatus;

import com.google.android.gms.ads.initialization.OnInitializationCompleteListener;

import com.google.android.material.navigation.NavigationView;

import com.google.android.material.snackbar.Snackbar;

import com.google.gson.Gson;


import java.io.IOException;

import java.util.ArrayList;

import java.util.List;


import androidx.annotation.NonNull;

import androidx.appcompat.app.ActionBarDrawerToggle;

import androidx.appcompat.app.AppCompatActivity;

import androidx.appcompat.widget.SearchView;

import androidx.appcompat.widget.Toolbar;

import androidx.core.view.GravityCompat;

import androidx.drawerlayout.widget.DrawerLayout;

import androidx.navigation.ui.AppBarConfiguration;

import androidx.recyclerview.widget.GridLayoutManager;

import androidx.recyclerview.widget.RecyclerView;

import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;

import network.ApiClient;

import network.ApiInterface;

import network.RestError;

import network.connectionManager;

import network.contact;

import network.data;

import network.quoteShow;

import offlineconnection.UserContract;

import offlineconnection.UserDbHelper;

import retrofit2.Call;

import retrofit2.Callback;

import retrofit2.Response;


public class home extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {

    RecyclerView recyclerView;

  recyclAdapter recyclAdapter;

    Context context=this;

    UserDbHelper userDbHelper;

    SQLiteDatabase sqLiteDatabase;

    Cursor cursor;

    FloatingActionButton add_quotes,view_quotes;

recyclAdapteroffline recyclAdapteroffline;

    SwipeRefreshLayout swipeRefreshLayout;

boolean flag;

    private List<contact> contacts;

    private ApiInterface apiInterface;

    DrawerLayout relativeLayout;

    boolean backtoexit=false;

    public List<model> modelList;

    AdView adView;

    private InterstitialAd interstitialAd;

    final LoaderDialog loaderDialog = new LoaderDialog();




    private AppBarConfiguration mAppBarConfiguration;




    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_home);


        Toolbar toolbar = findViewById(R.id.toolbar);

        setSupportActionBar(toolbar);

        MobileAds.initialize(this,"ca-app-pub-6020255471056041/9686541658");

        adView=findViewById(R.id.adView);

        MobileAds.initialize(this, new OnInitializationCompleteListener() {

            @Override

            public void onInitializationComplete(InitializationStatus initializationStatus) {


            }

        });

        AdRequest adRequest=new AdRequest.Builder().build();

        adView.loadAd(adRequest);

       /* interstitialAd=new InterstitialAd(this);

        interstitialAd.setAdUnitId("ca-app-pub-6020255471056041/9494969962");

        interstitialAd.loadAd(new AdRequest.Builder().build());

        interstitialAd.setAdListener(new AdListener(){

            @Override

            public void onAdClosed(){

                Toast.makeText(home.this, "close", Toast.LENGTH_SHORT).show();

            }

        });


        if (interstitialAd.isLoaded()){

            interstitialAd.show();

        }

        else{

            Toast.makeText(this, "not show", Toast.LENGTH_SHORT).show();


        }

*/

        DrawerLayout drawer = findViewById(R.id.drawer_layout);

        ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(

                this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);

        drawer.addDrawerListener(toggle);

        toggle.syncState();

        NavigationView navigationView = findViewById(R.id.nav_view);

        navigationView.setNavigationItemSelectedListener((NavigationView.OnNavigationItemSelectedListener) context);

        mAppBarConfiguration = new AppBarConfiguration.Builder(

                R.id.nav_home, R.id.nav_all_qoutes, R.id.nav_favorite,

                R.id.nav_rate_app, R.id.nav_share, R.id.nav_feedback)

                .setDrawerLayout(drawer)

                .build();

            swipeRefreshLayout=findViewById(R.id.swipelayout);

        recyclerView=findViewById(R.id.recycl);

        relativeLayout=findViewById(R.id.drawer_layout);

        //int rid=R.anim.layout_animation_right_to_left;

        //LayoutAnimationController animationController= AnimationUtils.loadLayoutAnimation(this,rid);


        recyclerView.setHasFixedSize(true);

add_quotes=findViewById(R.id.action_add);

view_quotes=findViewById(R.id.action_view);

view_quotes.setOnClickListener(new View.OnClickListener() {

    @Override

    public void onClick(View v) {

        Intent intent=new Intent(context,viewmyquotes.class);

        startActivity(intent);

        Toast.makeText(context, "View Quotes", Toast.LENGTH_SHORT).show();

    }

});


add_quotes.setOnClickListener(new View.OnClickListener() {

    @Override

    public void onClick(View v) {


        Toast.makeText(context, "Add Quotes", Toast.LENGTH_SHORT).show();

        Intent intent=new Intent(context,add_quotes.class);

        startActivity(intent);

    }

});


        recyclerView.setLayoutManager(new GridLayoutManager(this,2));

        if(connectionManager.checkconnection(getBaseContext())){

            flag=true;

            get_All();

            getonline();

        }else{

           getoffline();

            flag=false;

        }

        swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {

            @Override

            public void onRefresh() {

                if(connectionManager.checkconnection(getBaseContext())){

                    flag=true;

                    get_msg_u();

                    get_All();

                    getonline();

                }else{

                    get_msg();

                    flag=false;

                    getoffline();

                    swipeRefreshLayout.setRefreshing(false);

                }

            }

        });



    }


    @SuppressLint("ResourceAsColor")

    private void get_msg() {

        Snackbar snackbar = Snackbar

                .make(relativeLayout, "No Internet Connection!", Snackbar.LENGTH_LONG)

                .setAction("RETRY", new View.OnClickListener() {

                    @Override

                    public void onClick(View view) {

                        if(connectionManager.checkconnection(getBaseContext())){

                            Intent intent=new Intent(getApplicationContext(),home.class);

                            startActivity(intent);

                            finish();

                        }

                        else{

                            Toast.makeText(getApplicationContext(), "Check Your Connection", Toast.LENGTH_SHORT).show();

                        }

                    }

                });

        View snackBarView = snackbar.getView();

        snackBarView.setBackgroundColor(Color.parseColor("#FF4081"));

        snackbar.setActionTextColor(Color.YELLOW);

        View sbView = snackbar.getView();

        TextView textView = (TextView) sbView.findViewById(R.id.snackbar_text);

        textView.setTextColor(Color.WHITE);

        snackbar.show();

    }

    private void get_All() {

        apiInterface= ApiClient.getClient().create(ApiInterface.class);

        Call<quoteShow> call = apiInterface.get_all_quote();

        call.enqueue(new Callback<quoteShow>() {

            @Override

            public void onResponse(Call<quoteShow> call, Response<quoteShow> response) {


                if (response.isSuccessful()) {

                   userDbHelper = new UserDbHelper(getApplicationContext());


                    sqLiteDatabase = userDbHelper.getReadableDatabase();

                    sqLiteDatabase.delete(UserContract.NewUserInfo.TABLE_NAME_Q,null,null);

                    for (int i=0;i<response.body().getRecords().size();i++){


                        String name = response.body().getRecords().get(i).getQuotesName();

                        String id = response.body().getRecords().get(i).getId();

                        String aname = response.body().getRecords().get(i).getAuthorName();

                        String status = response.body().getRecords().get(i).getStatus();

                        String cid = response.body().getRecords().get(i).getCategoryId();

                        String cname = response.body().getRecords().get(i).getCategoryName();


                        userDbHelper.addinformations_quotes(id, name, aname,status,cid,cname, sqLiteDatabase);

                        //Toast.makeText(getBaseContext(), "save", Toast.LENGTH_LONG).show();


                    } userDbHelper.close();

                    // recyclerView.setAdapter(recyclAdapter2);

                } else {

                    RestError errorResponse;

                    Gson gson = new Gson();

                    try {

                        errorResponse = gson.fromJson(response.errorBody().string(), RestError.class);

                        errorResponse.setError(true);

                        Toast.makeText(context, errorResponse.getMessage(), Toast.LENGTH_SHORT).show();

                        Log.e("Error", errorResponse.getMessage());

                    } catch (IOException e) {

                        e.printStackTrace();

                    }

                }


            }


            @Override

            public void onFailure(Call<quoteShow> call, Throwable t) {

                //loaderDialog.hideDialog();

                t.getCause();


            }

        }); }

    private void getoffline() {


        userDbHelper =new UserDbHelper(getApplicationContext());

        sqLiteDatabase = userDbHelper.getReadableDatabase();

        List<data> data = new ArrayList<>();

        String[] projeaction={UserContract.NewUserInfo.C_ID,UserContract.NewUserInfo.C_NAME,UserContract.NewUserInfo.C_DESC};

        cursor= sqLiteDatabase.query(UserContract.NewUserInfo.TABLE_NAME,projeaction,null,null,null,null,null);


        if(cursor.moveToFirst()){

            do{

                String id,name,desc;

                id=cursor.getString(0);

                name=cursor.getString(1);

                desc=cursor.getString(2);

                data dataProvaider=new data(id,name,desc);

                data.add(dataProvaider);



            }while(cursor.moveToNext());


        }

        recyclAdapteroffline=new recyclAdapteroffline(this,data);

        recyclerView.setAdapter(recyclAdapteroffline);


    }


    @SuppressLint("ResourceAsColor")

    private void get_msg_u() {

        Snackbar snackbar = Snackbar

                .make(relativeLayout, "Upto Date..!", Snackbar.LENGTH_LONG)

                .setAction("ok", new View.OnClickListener() {

                    @Override

                    public void onClick(View view) {

                        if(connectionManager.checkconnection(getBaseContext())){


                        }

                        else{

                            Toast.makeText(getApplicationContext(), "Check Your Connection !!", Toast.LENGTH_SHORT).show();

                        }

                    }

                });

        View snackBarView = snackbar.getView();

        snackBarView.setBackgroundColor(Color.parseColor("#00bfa5"));

        snackbar.setActionTextColor(Color.CYAN);

        View sbView = snackbar.getView();

        TextView textView = (TextView) sbView.findViewById(R.id.snackbar_text);

        textView.setTextColor(Color.WHITE);

        snackbar.show();

    }

    private void getonline() {

        loaderDialog.showDialog(context);

        apiInterface= ApiClient.getClient().create(ApiInterface.class);

        Call<contact> call=apiInterface.getdata();

        call.enqueue(new Callback<contact>() {

            @Override

            public void onResponse(Call<contact> call, Response<contact> response) {


                loaderDialog.hideDialog();

                if (response.isSuccessful()) {

                    recyclAdapter=new recyclAdapter(context,response.body());


                    userDbHelper = new UserDbHelper(getApplicationContext());

                    sqLiteDatabase = userDbHelper.getReadableDatabase();

                    sqLiteDatabase.delete(UserContract.NewUserInfo.TABLE_NAME,null,null);

                    for (int i=0;i<response.body().getRecords().size();i++){

                        String name = response.body().getRecords().get(i).getName();

                        String id = response.body().getRecords().get(i).getId();

                        String desc = response.body().getRecords().get(i).getDescription();


                        userDbHelper.addinformations(id, name, desc, sqLiteDatabase);

                        //Toast.makeText(getBaseContext(), "save", Toast.LENGTH_LONG).show();


                    } userDbHelper.close();

                    recyclerView.setAdapter(recyclAdapter);

                    recyclAdapter.notifyDataSetChanged();

                    swipeRefreshLayout.setRefreshing(false);

                }

                else{

                    RestError errorResponse;

                    Gson gson = new Gson();

                    try {

                        errorResponse = gson.fromJson(response.errorBody().string(), RestError.class);

                        errorResponse.setError(true);

                        Toast.makeText(context, errorResponse.getMessage(), Toast.LENGTH_SHORT).show();

                        Log.e("Error", errorResponse.getMessage());

                    } catch (IOException e) {

                        e.printStackTrace();

                    }

                }


            }


            @Override

            public void onFailure(Call<contact> call, Throwable t) {

                loaderDialog.hideDialog();

                t.getCause();


            }

        });

    }



    @Override

    public void onBackPressed() {

        if(backtoexit)

        {super.onBackPressed();

            return;

        }


        this.backtoexit=true;

        Toast.makeText(this,"Click Back again to Exit",Toast.LENGTH_LONG).show();

        new Handler().postDelayed(new Runnable() {

            @Override

            public void run() {


                backtoexit=false;

            }

        },2000);

    }

    @Override

    public boolean onCreateOptionsMenu(Menu menu) {

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

        final MenuItem menuItem=menu.findItem(R.id.action_search);

        final SearchView searchView= (SearchView) menuItem.getActionView();


        searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {

            @Override

            public boolean onQueryTextSubmit(String s) {


                return false;

            }


            @Override

            public boolean onQueryTextChange(String s) {

              if(flag==true){recyclAdapter.getFilter().filter(s);}

              else if(flag==false){

                  recyclAdapteroffline.getFilter().filter(s);

              }

                return false;

            }

        });


        return super.onCreateOptionsMenu(menu);

    }



private  List<contact.Record> filterr(List<contact.Record> p1 , String query){

            query=query.toLowerCase();

            final List<contact.Record> filtermodellist=new ArrayList<>();

            for(contact.Record item:p1){

                final  String text=item.getName().toLowerCase();

                if(text.startsWith(query)){

                    filtermodellist.add(item);

                }


            }


return  filtermodellist;

}



    @Override

    public boolean onOptionsItemSelected(MenuItem item) {

        int i=item.getItemId();

        switch (i){

            case R.id.item_1:

                Intent intent=new Intent(context,about.class);

                startActivity(intent);

                this.finish();

                return true;

            default:

                return  super.onOptionsItemSelected(item);





        }



    }



    @Override

    public boolean onSupportNavigateUp()

    {

      return true;

    }


    @Override

    public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {

        int id = menuItem.getItemId();


        if (id == R.id.nav_home) {

           Intent intent=new Intent(context,home.class);

            startActivity(intent);


        } else if (id == R.id.nav_all_qoutes) {

            Intent intent=new Intent(context,recycle2.class);

            intent.putExtra("idname",0+"");

            intent.putExtra("fave",0+"");

            startActivity(intent);


        } else if (id == R.id.nav_favorite) {

            Intent intent=new Intent(context,recycle2.class);

            intent.putExtra("idname",0+"");

            intent.putExtra("fave",5+"");

            startActivity(intent);

        }else if (id == R.id.nav_rate_app) {


            Intent i = new Intent(android.content.Intent.ACTION_VIEW);

            i.setData(Uri.parse("http://play.google.com/store/apps/details?id=com.gkmaza.gujarati"));

            startActivity(i);

           /* Intent shareIntent =   new Intent(android.content.Intent.ACTION_SEND);

            shareIntent.setType("text/plain");

            shareIntent.putExtra(Intent.EXTRA_SUBJECT,"Rate App");

 String app_url =Shared.link;

            shareIntent.putExtra(android.content.Intent.EXTRA_TEXT,app_url);

            startActivity(Intent.createChooser(shareIntent, "Gujarati Quotes"));

*/

        }else if (id == R.id.nav_share) {

            Intent shareIntent =   new Intent(android.content.Intent.ACTION_SEND);

            shareIntent.setType("text/plain");

            shareIntent.putExtra(Intent.EXTRA_SUBJECT,"Gujarati Suvichar/Quotes");

            String app_url = Shared.shareapp+Shared.link;

            shareIntent.putExtra(android.content.Intent.EXTRA_TEXT,app_url);

            startActivity(Intent.createChooser(shareIntent, "Gujarati Quotes"));


        }else if (id == R.id.nav_feedback) {

            //Toast.makeText(context, "Feedback Comming Soon..!!", Toast.LENGTH_SHORT).show();

Intent intent=new Intent(home.this,feedback.class);

startActivity(intent);

finish();

        }

        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);

        drawer.closeDrawer(GravityCompat.START);

        return true;


}





}


add dependacy

 


    implementation 'com.google.code.gson:gson:2.8.5'

    implementation 'com.squareup.retrofit2:retrofit:2.5.0'

    implementation 'com.google.android.gms:play-services-ads:18.3.0'

    implementation 'com.squareup.retrofit2:converter-gson:2.5.0'

    implementation 'com.squareup.retrofit2:converter-scalars:2.5.0'

    implementation 'com.squareup.okhttp3:logging-interceptor:3.8.0'

    implementation 'com.squareup.okhttp3:okhttp:3.12.0'

    implementation 'pl.droidsonroids.gif:android-gif-drawable:1.2.19'


    implementation 'com.squareup.okhttp3:logging-interceptor:3.3.1'

add RestError.java

 package network;


import com.google.gson.annotations.Expose;

import com.google.gson.annotations.SerializedName;


public class RestError

{

    private boolean error;


    @SerializedName("status")

    @Expose

    private Integer status;

    @SerializedName("message")

    @Expose

    private String message;


    public RestError(String message) {

        this.message = message;

    }


    public boolean isError() {

        return error;

    }


    public void setError(boolean error) {

        this.error = error;

    }


    public String getMessage() {

        return message;

    }


    public void setMessage(String message) {

        this.message = message;

    }


}


add interface ApiInterface

 package network;


import retrofit2.Call;

import retrofit2.http.Body;

import retrofit2.http.Headers;

import retrofit2.http.POST;

import retrofit2.http.Query;


public interface ApiInterface

{

    String GET_CAT="readc.php";


   @Headers({"Content-Type: application/json","Accept: application/json"})

    @POST(GET_CAT)

    Call<contact> getdata();



}


Add StringConverter.java

 package network;



import androidx.annotation.NonNull;


import java.io.IOException;

import java.lang.annotation.Annotation;

import java.lang.reflect.Type;


import okhttp3.MediaType;

import okhttp3.RequestBody;

import okhttp3.ResponseBody;

import retrofit2.Converter;

import retrofit2.Retrofit;


class StringConverter extends Converter.Factory

{

    private static final MediaType MEDIA_TYPE = MediaType.parse("text/plain");

    @Override

    public Converter<ResponseBody, ?> responseBodyConverter(Type type, Annotation[] annotations, Retrofit retrofit) {

        if (String.class.equals(type)) {

            return new Converter<ResponseBody, String>() {

                @Override

                public String convert(@NonNull ResponseBody value) throws IOException {

                    return value.string();

                }

            };

        }

        return null;

    }


    @Override

    public Converter<?, RequestBody> requestBodyConverter(Type type, Annotation[] parameterAnnotations,

                                                          Annotation[] methodAnnotations, Retrofit retrofit) {


        if (String.class.equals(type)) {

            return new Converter<String, RequestBody>() {

                @Override

                public RequestBody convert(@NonNull String value) throws IOException {

                    return RequestBody.create(MEDIA_TYPE, value);

                }

            };

        }

        return null;

    }


}


Add TLSSocketFactory.java

 package network;


import java.io.IOException;

import java.net.InetAddress;

import java.net.Socket;

import java.security.KeyManagementException;

import java.security.NoSuchAlgorithmException;


import javax.net.ssl.SSLContext;

import javax.net.ssl.SSLSocket;

import javax.net.ssl.SSLSocketFactory;


class TLSSocketFactory extends SSLSocketFactory

{

    private SSLSocketFactory delegate;


    public TLSSocketFactory() throws KeyManagementException, NoSuchAlgorithmException {

        SSLContext context = SSLContext.getInstance("TLS");

        context.init(null, null, null);

        delegate = context.getSocketFactory();

    }


    @Override

    public String[] getDefaultCipherSuites() {

        return delegate.getDefaultCipherSuites();

    }


    @Override

    public String[] getSupportedCipherSuites() {

        return delegate.getSupportedCipherSuites();

    }


    @Override

    public Socket createSocket() throws IOException {

        return enableTLSOnSocket(delegate.createSocket());

    }


    @Override

    public Socket createSocket(Socket s, String host, int port, boolean autoClose) throws IOException {

        return enableTLSOnSocket(delegate.createSocket(s, host, port, autoClose));

    }


    @Override

    public Socket createSocket(String host, int port) throws IOException {

        return enableTLSOnSocket(delegate.createSocket(host, port));

    }


    @Override

    public Socket createSocket(String host, int port, InetAddress localHost, int localPort) throws IOException {

        return enableTLSOnSocket(delegate.createSocket(host, port, localHost, localPort));

    }


    @Override

    public Socket createSocket(InetAddress host, int port) throws IOException {

        return enableTLSOnSocket(delegate.createSocket(host, port));

    }


    @Override

    public Socket createSocket(InetAddress address, int port, InetAddress localAddress, int localPort) throws IOException {

        return enableTLSOnSocket(delegate.createSocket(address, port, localAddress, localPort));

    }


    private Socket enableTLSOnSocket(Socket socket) {

        if (socket != null && (socket instanceof SSLSocket)) {

            ((SSLSocket) socket).setEnabledProtocols(new String[]{"TLSv1.1", "TLSv1.2"});

        }

        return socket;

    }


}


get data from Api Using Retrofit2 ApiClient.java

package network;


import java.security.KeyManagementException;

import java.security.NoSuchAlgorithmException;

import java.util.concurrent.TimeUnit;


import okhttp3.OkHttpClient;

import okhttp3.logging.HttpLoggingInterceptor;

import retrofit2.Retrofit;

import retrofit2.converter.gson.GsonConverterFactory;

import retrofit2.converter.scalars.ScalarsConverterFactory;



public class ApiClient

{

    private static final String BASE_URL="http://www.gkmaza.com/apps/gujarati_suvichar/";

    private static Retrofit retrofit=null;

    private static OkHttpClient client;

    public static Retrofit getClient()

    {

        if(retrofit==null)

        {

            HttpLoggingInterceptor interceptor=new HttpLoggingInterceptor();

            interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);

            try

            {

                client = new OkHttpClient.Builder()

                        .followRedirects(true)

                        .followSslRedirects(true)

                        .sslSocketFactory(new TLSSocketFactory())

                        .retryOnConnectionFailure(true)

                        .addInterceptor(interceptor)

                        .connectTimeout(30, TimeUnit.MINUTES)

                        .readTimeout(30, TimeUnit.MINUTES)

                        .addInterceptor(interceptor)

                        .build();


            }catch (KeyManagementException e)

            {

                e.printStackTrace();

            }catch (NoSuchAlgorithmException e)

            {

                e.printStackTrace();

            }

            retrofit=new Retrofit.Builder()

                    .baseUrl(BASE_URL)

                    .client(client)

                    .addConverterFactory(new StringConverter())

                    .addConverterFactory(ScalarsConverterFactory.create())

                    .addConverterFactory(GsonConverterFactory.create())

                    .build();


        }


        return retrofit;

    }

}