Mershenda Kaspersky Blog

Blog ini berisi informasi seputar Loker, coding dll. semoga bermanfaat

  • Home
  • About
  • Shop
    • Sandal
    • Sepatu
    • Aplikasi
    • Gaun Pesta dan Pengantin
    • Kebaya
    • Baju Anak-anak
  • Loker
    • BUMN
    • PNS
    • SWASTA

Android Tutorial - Endless scrolling Recyclerview

by Mershenda Kaspersky Mei 03, 2020 android codeigniter endless scrolling java mysql php recyclerview tutorial tutorial android
Pada pengembangan aplikasi android tentu tidak terlepas dalam konsumsi data. Data tersebut dibentuk dalam sebuah Listview, Table atau Recyclerview. Tetapi data yang dikonsumsi tersebut memiliki jumlah yang banyak, tentunya akan memakan banyak source memori sampai kuota pengguna aplikasi kita juga harus terkuras. ini jadi salah satu pokok utama jika Anda tidak ingin kehilangan pengguna aplikasi. nah, salah satu caranya adalah dengan membuat loadmore (Endless scrolling). Dalam tutorial ini, kita akan membahas dan menerapkan Endless Scrolling pada recyclerview didalam project android kita, dengan memanfaatkan methods yang ada pada RecyclerView itu sendiri. Sebuah method bawaan yang mendeteksi gesture scrolldown saat user melihat list data dari database server. Lewat gesture inilah kita akan memanfaatkan untuk mengambil data pada page selanjutnya.



Bagaimana cara pembuatan nya ?, mari kita simak dibawah ini

1. Buat API dengan PHP Codeigniter
API ini dibuat untuk mendapatkan data dari database server. setelah buat API, setelah kita coba jalankan di browser dan API tersebut akan menampilkan data - data berupa JSON. berikut ini contoh data nya :
[{"tnf_receiver_id":"23618","tnf_receiver_value":"1794010","tnf_receiver_date":"","tnf_receiver_is_read":"0","tnf_receiver_tnf_id":"22754","tnf_receiver_as_approval":"0","tnf_receiver_type":"1","tnf_id":"22754","tnf_title":"Ajuan Santunan Duka","tnf_description":"Meminta approve ADMIN PUSAT Santunan Duka dengan No ajuan 416 dan Atas Nama YOGIE","tnf_send_date":"28\/04\/2020 12:06:32","tnf_send_NIP":"1590001","tnf_ref_id":"416","tnf_ref_table":"SantunanDuka_Model","tnf_type":"1","tnf_approval_id":"22655","tnf_approval_value":"-1","tnf_approval_value_approve":"0","tnf_approval_value_reject":"-1","tnf_approval_date":"","tnf_approval_tnf_id":"22754","tnf_approval_by_NIP":"","tnf_approval_note_1":"Meminta approve ADMIN PUSAT Santunan Duka dengan No ajuan 416 dan Atas Nama YOGIE","tnf_approval_note_2":"","x_tnf_approval_by_NIP":null,"x_nl_tnf_approval_by_NIP":null,"x_tnf_send_NIP":"1794010","x_nl_tnf_send_NIP":"GALIH","x_tnf_receiver_value":"1794010","x_nl_tnf_receiver_value":"GALIH","statuspesan":"1"}]

2. Buat Project di Android studio
pertama kita buat activity baru yang kita beri nama notifikasiactivity, karena disini kita buat list data notifikasi. berikut ini script notifikasi activity :
import android.app.ProgressDialog;import android.content.Context;import android.content.DialogInterface;import android.content.SharedPreferences;import android.graphics.Color;import android.net.ConnectivityManager;import android.net.NetworkInfo;import android.os.Handler;import android.support.v4.widget.SwipeRefreshLayout;import android.support.v7.app.AlertDialog;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.support.v7.widget.LinearLayoutManager;import android.support.v7.widget.RecyclerView;import android.support.v7.widget.Toolbar;import android.util.Log;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.widget.Button;import android.widget.TextView;import android.widget.Toast;
import com.android.volley.AuthFailureError;import com.android.volley.NetworkError;import com.android.volley.NoConnectionError;import com.android.volley.ParseError;import com.android.volley.RequestQueue;import com.android.volley.Response;import com.android.volley.ServerError;import com.android.volley.TimeoutError;import com.android.volley.VolleyError;import com.android.volley.toolbox.JsonArrayRequest;import com.android.volley.toolbox.Volley;import com.perumnasapp.eselfie.Adapter.NotifikasiAdapter;import com.perumnasapp.eselfie.Adapter.NotifikasiModel;import com.perumnasapp.eselfie.Adapter.OnLoadMoreNotif;import com.yarolegovich.lovelydialog.LovelyStandardDialog;
import org.apache.http.conn.ConnectTimeoutException;import org.json.JSONArray;import org.json.JSONException;import org.json.JSONObject;import org.xmlpull.v1.XmlPullParserException;
import java.net.ConnectException;import java.net.MalformedURLException;import java.net.SocketException;import java.net.SocketTimeoutException;import java.util.ArrayList;import java.util.List;
public class Notifikasi2Activity extends AppCompatActivity {
    private TextView tvEmptyView;    private RecyclerView mRecyclerView;    private NotifikasiAdapter mAdapter;    private LinearLayoutManager mLayoutManager;    private static final String TAG = "MainActivity";    private List<NotifikasiModel> modeldataList;    String gabung;    protected Handler handler;    private ProgressDialog pDialog;    //Volley Request Queue    private RequestQueue requestQueue;    //The request counter to send ?page=1, ?page=2  requests    private int requestCount = 1;    private int LIMIT = 20;    private SwipeRefreshLayout mSwipeRefreshLayout = null;    String id_group_arisan;    Toolbar toolbar;
    @Override    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_notifikasi2);        toolbar = (Toolbar) findViewById(R.id.toolbar);        setSupportActionBar(toolbar);        toolbar.setNavigationIcon(R.drawable.ic_arrow_back_black_24dp);
        pDialog = new ProgressDialog(this, R.style.ProgressBar);        tvEmptyView = (TextView) findViewById(R.id.empty_view_a1);        mRecyclerView = (RecyclerView) findViewById(R.id.my_recycler_view_a1);        handler = new Handler();        modeldataList = new ArrayList<NotifikasiModel>();
        SharedPreferences sharedPreferences = getSharedPreferences(AppVar.SHARED_PREF_NAME, Context.MODE_PRIVATE);        id_group_arisan  = sharedPreferences.getString(AppVar.nip_zs_simpeg, "");
        //Toast.makeText(Notifikasi2Activity.this, "Error: stu7 " + kodejab, Toast.LENGTH_LONG).show();        gabung = AppVar.NOTIFURL + requestCount + "&NIP=" + id_group_arisan;
        pDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);        pDialog.setMessage("Process...");        pDialog.setIndeterminate(true);        pDialog.setCanceledOnTouchOutside(false);        showDialog();
        load_data_first();
        mSwipeRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.swipeRefreshLayout_a1);        mSwipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
            @Override            public void onRefresh() {
                // do something                mSwipeRefreshLayout.setRefreshing(true);                requestCount = 1;                gabung = AppVar.NOTIFURL + requestCount + "&NIP=" + id_group_arisan;                modeldataList = new ArrayList<NotifikasiModel>();                //Toast.makeText(Notifikasi2Activity.this, "Error: stu7 " + gabung, Toast.LENGTH_LONG).show();
                load_data_first();
                // after refresh is done, remember to call the following code                if (mSwipeRefreshLayout != null && mSwipeRefreshLayout.isRefreshing()) {
                    //Toast.makeText(MainActivity.this, "tes0", Toast.LENGTH_SHORT).show();                    mAdapter.notifyDataSetChanged();                    //mSwipeRefreshLayout.setEnabled(mLayoutManager.findFirstCompletelyVisibleItemPosition() == 0);                    mSwipeRefreshLayout.setRefreshing(false);  // This hides the spinner                }
            }
        });    }

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

    @Override    public boolean onOptionsItemSelected(MenuItem item) {
        //--------------------------------------------------------------------------        // triggers if the user selects a menu item        //--------------------------------------------------------------------------        int id = item.getItemId();
        //noinspection SimplifiableIfStatement        if (id == android.R.id.home) {
            // finish the activity            onBackPressed();            return true;        }

        if (id == R.id.action_exit) {
            logout();        }

        return super.onOptionsItemSelected(item);    }

    private void logout(){
        //Creating an alert dialog to confirm logout        AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
        alertDialogBuilder.setMessage("Are you sure you want to logout?");        alertDialogBuilder.setPositiveButton("Yes",                new DialogInterface.OnClickListener() {
                    @Override                    public void onClick(DialogInterface arg0, int arg1) {

                        //Getting out sharedpreferences                        SharedPreferences preferences = getSharedPreferences(AppVar.SHARED_PREF_NAME, Context.MODE_PRIVATE);                        //Getting editor                        SharedPreferences.Editor editor = preferences.edit();
                        //Puting the value false for loggedin                        editor.putBoolean(AppVar.LOGGEDIN_SHARED_PREF, false);
                        //Putting blank value to email                        editor.putString(AppVar.EMAIL_SHARED_PREF, "");
                        //Saving the sharedpreferences                        editor.commit();
                        finish();                        finishAffinity();
                        //Toast.makeText(getApplicationContext(), "Logout user!", Toast.LENGTH_LONG).show();                        android.os.Process.killProcess(android.os.Process.myPid());                        System.exit(1);                        //Starting login activity                        //Intent intent = new Intent(AbsensiActivity.this, MainActivity.class);                        //startActivity(intent);                    }
                });
        alertDialogBuilder.setNegativeButton("No",                new DialogInterface.OnClickListener() {
                    @Override                    public void onClick(DialogInterface arg0, int arg1) {

                    }
                });
        //Showing the alert dialog        AlertDialog alertDialog = alertDialogBuilder.create();
        alertDialog.show();
        Button nbutton = alertDialog.getButton(DialogInterface.BUTTON_NEGATIVE);        //nbutton.setBackgroundColor(Color.YELLOW);        nbutton.setTextColor(Color.BLACK);        Button pbutton = alertDialog.getButton(DialogInterface.BUTTON_POSITIVE);        //pbutton.setBackgroundColor(Color.YELLOW);        pbutton.setTextColor(Color.BLACK);

    }

    private void showDialog() {
        if (!pDialog.isShowing())
            pDialog.show();    }

    private void hideDialog() {
        if (pDialog.isShowing())
            pDialog.dismiss();    }

    public void load_data_first() {
        //Toast.makeText(Notifikasi2Activity.this, kodejab, Toast.LENGTH_SHORT).show();        //Toast.makeText(Notifikasi2Activity.this, gabung, Toast.LENGTH_SHORT).show();
        JsonArrayRequest reqsubkategori = new JsonArrayRequest(gabung,                new Response.Listener<JSONArray>() {
                    @Override                    public void onResponse(JSONArray response) {
                        Log.d(TAG, response.toString());
                        try {
                            //Toast.makeText(Notifikasi2Activity.this, response.toString(), Toast.LENGTH_SHORT).show();                            hideDialog();
                            if (response.length() > 0) {
                                for (int i = 0; i < response.length(); i++) {
                                    JSONObject person = (JSONObject) response
                                            .get(i);
                                    //(String id_group_arisan, String nama_group_arisan, String id_anggota, String id_user, String nama_user, String statusanggota                                    if (person.getInt("statuspesan") == 1){
                                        //Toast.makeText(Notifikasi2Activity.this, person.getString("tnf_receiver_id"), Toast.LENGTH_SHORT).show();                                        String tnf_receiver_id = person.getString("tnf_receiver_id");                                        String tnf_receiver_value = person.getString("tnf_receiver_value");                                        String tnf_receiver_date = person.getString("tnf_receiver_date");                                        String tnf_receiver_is_read = person.getString("tnf_receiver_is_read");                                        String tnf_receiver_tnf_id = person.getString("tnf_receiver_tnf_id");                                        String tnf_receiver_as_approval = person.getString("tnf_receiver_as_approval");                                        String tnf_receiver_type = person.getString("tnf_receiver_type");                                        String tnf_id = person.getString("tnf_id");                                        String tnf_title = person.getString("tnf_title");                                        String tnf_description = person.getString("tnf_description");                                        String tnf_send_date = person.getString("tnf_send_date");                                        String tnf_send_NIP = person.getString("tnf_send_NIP");                                        String tnf_ref_id = person.getString("tnf_ref_id");                                        String tnf_ref_table = person.getString("tnf_ref_table");                                        String tnf_type = person.getString("tnf_type");                                        String tnf_approval_id = person.getString("tnf_approval_id");                                        String tnf_approval_value = person.getString("tnf_approval_value");                                        String tnf_approval_value_approve = person.getString("tnf_approval_value_approve");                                        String tnf_approval_value_reject = person.getString("tnf_approval_value_reject");                                        String tnf_approval_date = person.getString("tnf_approval_date");                                        String tnf_approval_tnf_id = person.getString("tnf_approval_tnf_id");                                        String tnf_approval_by_NIP = person.getString("tnf_approval_by_NIP");                                        String tnf_approval_note_1 = person.getString("tnf_approval_note_1");                                        String tnf_approval_note_2 = person.getString("tnf_approval_note_2");                                        String x_tnf_approval_by_NIP = person.getString("x_tnf_approval_by_NIP");                                        String x_nl_tnf_approval_by_NIP = person.getString("x_nl_tnf_approval_by_NIP");                                        String x_tnf_send_NIP = person.getString("x_tnf_send_NIP");                                        String x_nl_tnf_send_NIP = person.getString("x_nl_tnf_send_NIP");                                        String x_tnf_receiver_value = person.getString("x_tnf_receiver_value");                                        String x_nl_tnf_receiver_value = person.getString("x_nl_tnf_receiver_value");
                                        modeldataList.add(new NotifikasiModel(  tnf_receiver_id,  tnf_receiver_value,  tnf_receiver_date,  tnf_receiver_is_read,  tnf_receiver_tnf_id,  tnf_receiver_as_approval,  tnf_receiver_type,  tnf_id,  tnf_title,  tnf_description,  tnf_send_date,  tnf_send_NIP,  tnf_ref_id,  tnf_ref_table,  tnf_type,  tnf_approval_id,  tnf_approval_value,  tnf_approval_value_approve,  tnf_approval_value_reject,  tnf_approval_date,  tnf_approval_tnf_id,  tnf_approval_by_NIP,  tnf_approval_note_1,  tnf_approval_note_2,  x_tnf_approval_by_NIP,  x_nl_tnf_approval_by_NIP,  x_tnf_send_NIP,  x_nl_tnf_send_NIP,  x_tnf_receiver_value,  x_nl_tnf_receiver_value));                                    }

                                }

                                progresafter();                            }

                        } catch (JSONException e) {
                            hideDialog();                            e.printStackTrace();
                            new LovelyStandardDialog(Notifikasi2Activity.this, LovelyStandardDialog.ButtonLayout.VERTICAL)
                                    .setTopColorRes(R.color.colorPrimaryDark)
                                    .setButtonsColorRes(R.color.colorPrimary)
                                    .setIcon(R.drawable.ic_beritakm)
                                    .setTitle("information")
                                    .setMessage("Parse Error (because of invalid json or xml).")
                                    .setPositiveButton(android.R.string.ok, null)
                                    .show();                        }
                    }
                }, new Response.ErrorListener() {
            @Override            public void onErrorResponse(VolleyError error) {
                hideDialog();                if (error instanceof TimeoutError || error.getCause() instanceof SocketTimeoutException
                        || error.getCause() instanceof ConnectTimeoutException
                        || error.getCause() instanceof SocketException) {
                    //Time out error                    new LovelyStandardDialog(Notifikasi2Activity.this, LovelyStandardDialog.ButtonLayout.VERTICAL)
                            .setTopColorRes(R.color.colorPrimaryDark)
                            .setButtonsColorRes(R.color.colorPrimary)
                            .setIcon(R.drawable.ic_beritakm)
                            .setTitle("information")
                            .setMessage("Connection timeout error. Please Try Again")
                            .setPositiveButton(android.R.string.ok, null)
                            .show();
                }else if(error instanceof NoConnectionError){
                    //net work error                    ConnectivityManager cm = (ConnectivityManager) Notifikasi2Activity.this                            .getSystemService(Context.CONNECTIVITY_SERVICE);                    NetworkInfo activeNetwork = null;
                    if (cm != null) {
                        activeNetwork = cm.getActiveNetworkInfo();                    }
                    if(activeNetwork != null && activeNetwork.isConnectedOrConnecting()){
                        //Toast.makeText(Notifikasi2Activity.this, "Server is not connected to internet.",                        //       Toast.LENGTH_SHORT).show();                        new LovelyStandardDialog(Notifikasi2Activity.this, LovelyStandardDialog.ButtonLayout.VERTICAL)
                                .setTopColorRes(R.color.colorPrimaryDark)
                                .setButtonsColorRes(R.color.colorPrimary)
                                .setIcon(R.drawable.ic_beritakm)
                                .setTitle("information")
                                .setMessage("No Internet Connection.")
                                .setPositiveButton(android.R.string.ok, null)
                                .show();                    } else {
                        // Toast.makeText(Notifikasi2Activity.this, "Your device is not connected to internet.",                        //       Toast.LENGTH_SHORT).show();                        new LovelyStandardDialog(Notifikasi2Activity.this, LovelyStandardDialog.ButtonLayout.VERTICAL)
                                .setTopColorRes(R.color.colorPrimaryDark)
                                .setButtonsColorRes(R.color.colorPrimary)
                                .setIcon(R.drawable.ic_beritakm)
                                .setTitle("information")
                                .setMessage("No Internet Connection.")
                                .setPositiveButton(android.R.string.ok, null)
                                .show();                    }



                } else if (error instanceof AuthFailureError) {
                    //error                    new LovelyStandardDialog(Notifikasi2Activity.this, LovelyStandardDialog.ButtonLayout.VERTICAL)
                            .setTopColorRes(R.color.colorPrimaryDark)
                            .setButtonsColorRes(R.color.colorPrimary)
                            .setIcon(R.drawable.ic_beritakm)
                            .setTitle("information")
                            .setMessage("server couldn't find the authenticated request.")
                            .setPositiveButton(android.R.string.ok, null)
                            .show();
                } else if (error instanceof ServerError || error.getCause() instanceof ServerError) {
                    //Erroor                    new LovelyStandardDialog(Notifikasi2Activity.this, LovelyStandardDialog.ButtonLayout.VERTICAL)
                            .setTopColorRes(R.color.colorPrimaryDark)
                            .setButtonsColorRes(R.color.colorPrimary)
                            .setIcon(R.drawable.ic_beritakm)
                            .setTitle("information")
                            .setMessage("Server is not responding..")
                            .setPositiveButton(android.R.string.ok, null)
                            .show();                } else if (error instanceof NetworkError || error.getCause() instanceof ConnectException) {
                    //Error                    new LovelyStandardDialog(Notifikasi2Activity.this, LovelyStandardDialog.ButtonLayout.VERTICAL)
                            .setTopColorRes(R.color.colorPrimaryDark)
                            .setButtonsColorRes(R.color.colorPrimary)
                            .setIcon(R.drawable.ic_beritakm)
                            .setTitle("information")
                            .setMessage("No Internet Connection. Please check your connection!")
                            .setPositiveButton(android.R.string.ok, null)
                            .show();
                } else if (error instanceof ParseError || error.getCause() instanceof IllegalStateException
                        || error.getCause() instanceof JSONException
                        || error.getCause() instanceof XmlPullParserException) {
                    //Error                    new LovelyStandardDialog(Notifikasi2Activity.this, LovelyStandardDialog.ButtonLayout.VERTICAL)
                            .setTopColorRes(R.color.colorPrimaryDark)
                            .setButtonsColorRes(R.color.colorPrimary)
                            .setIcon(R.drawable.ic_beritakm)
                            .setTitle("information")
                            .setMessage("Parse Error (because of invalid json or xml).")
                            .setPositiveButton(android.R.string.ok, null)
                            .show();
                }
                else if (error.getCause() instanceof OutOfMemoryError){
                    //Toast.makeText(Notifikasi2Activity.this, "Out Of Memory Error.", Toast.LENGTH_SHORT).show();                }
                else if (error.getCause() instanceof MalformedURLException) {
                    //Error                    new LovelyStandardDialog(Notifikasi2Activity.this, LovelyStandardDialog.ButtonLayout.VERTICAL)
                            .setTopColorRes(R.color.colorPrimaryDark)
                            .setButtonsColorRes(R.color.colorPrimary)
                            .setIcon(R.drawable.ic_beritakm)
                            .setTitle("information")
                            .setMessage("Bad Request.")
                            .setPositiveButton(android.R.string.ok, null)
                            .show();
                } else{
                    //Error                    new LovelyStandardDialog(Notifikasi2Activity.this, LovelyStandardDialog.ButtonLayout.VERTICAL)
                            .setTopColorRes(R.color.colorPrimaryDark)
                            .setButtonsColorRes(R.color.colorPrimary)
                            .setIcon(R.drawable.ic_beritakm)
                            .setTitle("information")
                            .setMessage("An unknown error occurred." + error.toString())
                            .setPositiveButton(android.R.string.ok, null)
                            .show();                }
            }
        });
        // Adding request to request queue        //AppController.getInstance().addToRequestQueue(req);        Volley.newRequestQueue(Notifikasi2Activity.this).add(reqsubkategori);    }

    public void progresafter() {
        try {
            mRecyclerView.setHasFixedSize(false);            mLayoutManager = new LinearLayoutManager(Notifikasi2Activity.this);            // use a linear layout manager            mRecyclerView.setLayoutManager(mLayoutManager);            //mRecyclerView.addItemDecoration(new DividerItemDecoration(this.Notifikasi2Activity.this, LinearLayoutManager.VERTICAL));            // create an Object for Adapter            mAdapter = new NotifikasiAdapter(modeldataList, mRecyclerView);            // set the adapter object to the Recyclerview            mRecyclerView.setAdapter(mAdapter);
            if (modeldataList.isEmpty()) {
                mRecyclerView.setVisibility(View.GONE);                tvEmptyView.setVisibility(View.VISIBLE);                //Toast.makeText(MainActivity.this, " row bernilai 0 ", Toast.LENGTH_SHORT).show();            } else {
                mRecyclerView.setVisibility(View.VISIBLE);                tvEmptyView.setVisibility(View.GONE);                //Toast.makeText(Notifikasi2Activity.this, " row bernilai 0 ", Toast.LENGTH_SHORT).show();            }

            /*mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {                @Override                public void onScrolled(RecyclerView recyclerView, int dx, int dy) {                    int lastVisiblePosition = mLayoutManager.findLastVisibleItemPosition();                    Toast.makeText(Notifikasi2Activity.this, "v" + String.valueOf(dx)+ String.valueOf(dy), Toast.LENGTH_SHORT).show();                    Toast.makeText(Notifikasi2Activity.this, String.valueOf(recyclerView.getChildCount()), Toast.LENGTH_SHORT).show();                    if (lastVisiblePosition == recyclerView.getChildCount()) {                        Toast.makeText(Notifikasi2Activity.this, " set onload more ", Toast.LENGTH_SHORT).show();                    }                }            });*/
            mAdapter.setOnLoadMoreListener(new OnLoadMoreNotif() {
                @Override                public void onLoadMoreNotif() {

                    //add null , so the adapter will check view_type and show progress bar at bottom                    modeldataList.add(null);                    mAdapter.notifyItemInserted(modeldataList.size() - 1);                    // Toast.makeText(Notifikasi2Activity.this, " set onload more ", Toast.LENGTH_SHORT).show();
                    handler.postDelayed(new Runnable() {
                        @Override                        public void run() {
                            //   remove progress item                            modeldataList.remove(modeldataList.size() - 1);                            mAdapter.notifyItemRemoved(modeldataList.size());                            requestCount = requestCount + 1;                            //Toast.makeText(Notifikasi2Activity.this, " rpage " + String.valueOf(requestCount), Toast.LENGTH_SHORT).show();                            onscrolldatax(requestCount);                        }
                    }, 2000);
                }
            });        }
        catch (Exception e) {
            Toast.makeText(Notifikasi2Activity.this, "Error: stu" + e.toString(), Toast.LENGTH_LONG).show();        }
    }

    private void onscrolldatax(int start) {
        //Toast.makeText(Notifikasi2Activity.this, "test"+kodeunker, Toast.LENGTH_SHORT).show();        gabung = AppVar.NOTIFURL + start + "&NIP=" + id_group_arisan;
        JsonArrayRequest onscrolldata = new JsonArrayRequest(gabung,                new Response.Listener<JSONArray>() {
                    @Override                    public void onResponse(JSONArray response) {
                        Log.d(TAG, response.toString());
                        try {
                            for (int i = 0; i < response.length(); i++) {
                                JSONObject person = (JSONObject) response
                                        .get(i);
                                //Toast.makeText(MainActivity.this, person.getString("statuspesan"), Toast.LENGTH_SHORT).show();                                if (person.getInt("statuspesan") == 1){

                                    String tnf_receiver_id = person.getString("tnf_receiver_id");                                    String tnf_receiver_value = person.getString("tnf_receiver_value");                                    String tnf_receiver_date = person.getString("tnf_receiver_date");                                    String tnf_receiver_is_read = person.getString("tnf_receiver_is_read");                                    String tnf_receiver_tnf_id = person.getString("tnf_receiver_tnf_id");                                    String tnf_receiver_as_approval = person.getString("tnf_receiver_as_approval");                                    String tnf_receiver_type = person.getString("tnf_receiver_type");                                    String tnf_id = person.getString("tnf_id");                                    String tnf_title = person.getString("tnf_title");                                    String tnf_description = person.getString("tnf_description");                                    String tnf_send_date = person.getString("tnf_send_date");                                    String tnf_send_NIP = person.getString("tnf_send_NIP");                                    String tnf_ref_id = person.getString("tnf_ref_id");                                    String tnf_ref_table = person.getString("tnf_ref_table");                                    String tnf_type = person.getString("tnf_type");                                    String tnf_approval_id = person.getString("tnf_approval_id");                                    String tnf_approval_value = person.getString("tnf_approval_value");                                    String tnf_approval_value_approve = person.getString("tnf_approval_value_approve");                                    String tnf_approval_value_reject = person.getString("tnf_approval_value_reject");                                    String tnf_approval_date = person.getString("tnf_approval_date");                                    String tnf_approval_tnf_id = person.getString("tnf_approval_tnf_id");                                    String tnf_approval_by_NIP = person.getString("tnf_approval_by_NIP");                                    String tnf_approval_note_1 = person.getString("tnf_approval_note_1");                                    String tnf_approval_note_2 = person.getString("tnf_approval_note_2");                                    String x_tnf_approval_by_NIP = person.getString("x_tnf_approval_by_NIP");                                    String x_nl_tnf_approval_by_NIP = person.getString("x_nl_tnf_approval_by_NIP");                                    String x_tnf_send_NIP = person.getString("x_tnf_send_NIP");                                    String x_nl_tnf_send_NIP = person.getString("x_nl_tnf_send_NIP");                                    String x_tnf_receiver_value = person.getString("x_tnf_receiver_value");                                    String x_nl_tnf_receiver_value = person.getString("x_nl_tnf_receiver_value");
                                    modeldataList.add(new NotifikasiModel(  tnf_receiver_id,  tnf_receiver_value,  tnf_receiver_date,  tnf_receiver_is_read,  tnf_receiver_tnf_id,  tnf_receiver_as_approval,  tnf_receiver_type,  tnf_id,  tnf_title,  tnf_description,  tnf_send_date,  tnf_send_NIP,  tnf_ref_id,  tnf_ref_table,  tnf_type,  tnf_approval_id,  tnf_approval_value,  tnf_approval_value_approve,  tnf_approval_value_reject,  tnf_approval_date,  tnf_approval_tnf_id,  tnf_approval_by_NIP,  tnf_approval_note_1,  tnf_approval_note_2,  x_tnf_approval_by_NIP,  x_nl_tnf_approval_by_NIP,  x_tnf_send_NIP,  x_nl_tnf_send_NIP,  x_tnf_receiver_value,  x_nl_tnf_receiver_value));                                    //modeldataList.add(new NotifikasiModel( id_notif,  id_pengirim,  jenis_notif,  longi_pengirim,  lati_pengirim,  id_user_penerima,  status_respon,  tgl_respon,  isi_notifikasi,  tgl_entry,  statuspesan, nama_pengirim));                                    mAdapter.notifyItemInserted(modeldataList.size());                                }
                                else {
                                    String isipesan = person.getString("isipesan");                                    //Toast.makeText(Notifikasi2Activity.this, isipesan, Toast.LENGTH_SHORT).show();                                }
                            }

                            mAdapter.setLoaded();
                            //progresafter();
                        } catch (JSONException e) {
                            hideDialog();                            e.printStackTrace();                            new LovelyStandardDialog(Notifikasi2Activity.this, LovelyStandardDialog.ButtonLayout.VERTICAL)
                                    .setTopColorRes(R.color.colorPrimaryDark)
                                    .setButtonsColorRes(R.color.colorPrimary)
                                    .setIcon(R.drawable.ic_beritakm)
                                    .setTitle("information")
                                    .setMessage("Parse Error (because of invalid json or xml).")
                                    .setPositiveButton(android.R.string.ok, null)
                                    .show();                        }
                    }
                }, new Response.ErrorListener() {
            @Override            public void onErrorResponse(VolleyError error) {
                hideDialog();                if (error instanceof TimeoutError || error.getCause() instanceof SocketTimeoutException
                        || error.getCause() instanceof ConnectTimeoutException
                        || error.getCause() instanceof SocketException) {
                    //Time out error                    new LovelyStandardDialog(Notifikasi2Activity.this, LovelyStandardDialog.ButtonLayout.VERTICAL)
                            .setTopColorRes(R.color.colorPrimaryDark)
                            .setButtonsColorRes(R.color.colorPrimary)
                            .setIcon(R.drawable.ic_beritakm)
                            .setTitle("information")
                            .setMessage("Connection timeout error. Please Try Again")
                            .setPositiveButton(android.R.string.ok, null)
                            .show();
                }else if(error instanceof NoConnectionError){
                    //net work error                    ConnectivityManager cm = (ConnectivityManager) Notifikasi2Activity.this                            .getSystemService(Context.CONNECTIVITY_SERVICE);                    NetworkInfo activeNetwork = null;
                    if (cm != null) {
                        activeNetwork = cm.getActiveNetworkInfo();                    }
                    if(activeNetwork != null && activeNetwork.isConnectedOrConnecting()){
                        //Toast.makeText(Notifikasi2Activity.this, "Server is not connected to internet.",                        //       Toast.LENGTH_SHORT).show();                        new LovelyStandardDialog(Notifikasi2Activity.this, LovelyStandardDialog.ButtonLayout.VERTICAL)
                                .setTopColorRes(R.color.colorPrimaryDark)
                                .setButtonsColorRes(R.color.colorPrimary)
                                .setIcon(R.drawable.ic_beritakm)
                                .setTitle("information")
                                .setMessage("No Internet Connection.")
                                .setPositiveButton(android.R.string.ok, null)
                                .show();                    } else {
                        // Toast.makeText(Notifikasi2Activity.this, "Your device is not connected to internet.",                        //       Toast.LENGTH_SHORT).show();                        new LovelyStandardDialog(Notifikasi2Activity.this, LovelyStandardDialog.ButtonLayout.VERTICAL)
                                .setTopColorRes(R.color.colorPrimaryDark)
                                .setButtonsColorRes(R.color.colorPrimary)
                                .setIcon(R.drawable.ic_beritakm)
                                .setTitle("information")
                                .setMessage("No Internet Connection.")
                                .setPositiveButton(android.R.string.ok, null)
                                .show();                    }



                } else if (error instanceof AuthFailureError) {
                    //error                    new LovelyStandardDialog(Notifikasi2Activity.this, LovelyStandardDialog.ButtonLayout.VERTICAL)
                            .setTopColorRes(R.color.colorPrimaryDark)
                            .setButtonsColorRes(R.color.colorPrimary)
                            .setIcon(R.drawable.ic_beritakm)
                            .setTitle("information")
                            .setMessage("server couldn't find the authenticated request.")
                            .setPositiveButton(android.R.string.ok, null)
                            .show();
                } else if (error instanceof ServerError || error.getCause() instanceof ServerError) {
                    //Erroor                    new LovelyStandardDialog(Notifikasi2Activity.this, LovelyStandardDialog.ButtonLayout.VERTICAL)
                            .setTopColorRes(R.color.colorPrimaryDark)
                            .setButtonsColorRes(R.color.colorPrimary)
                            .setIcon(R.drawable.ic_beritakm)
                            .setTitle("information")
                            .setMessage("Server is not responding..")
                            .setPositiveButton(android.R.string.ok, null)
                            .show();                } else if (error instanceof NetworkError || error.getCause() instanceof ConnectException) {
                    //Error                    new LovelyStandardDialog(Notifikasi2Activity.this, LovelyStandardDialog.ButtonLayout.VERTICAL)
                            .setTopColorRes(R.color.colorPrimaryDark)
                            .setButtonsColorRes(R.color.colorPrimary)
                            .setIcon(R.drawable.ic_beritakm)
                            .setTitle("information")
                            .setMessage("No Internet Connection. Please check your connection!")
                            .setPositiveButton(android.R.string.ok, null)
                            .show();
                } else if (error instanceof ParseError || error.getCause() instanceof IllegalStateException
                        || error.getCause() instanceof JSONException
                        || error.getCause() instanceof XmlPullParserException) {
                    //Error                    new LovelyStandardDialog(Notifikasi2Activity.this, LovelyStandardDialog.ButtonLayout.VERTICAL)
                            .setTopColorRes(R.color.colorPrimaryDark)
                            .setButtonsColorRes(R.color.colorPrimary)
                            .setIcon(R.drawable.ic_beritakm)
                            .setTitle("information")
                            .setMessage("Parse Error (because of invalid json or xml).")
                            .setPositiveButton(android.R.string.ok, null)
                            .show();
                }
                else if (error.getCause() instanceof OutOfMemoryError){
                    //Toast.makeText(Notifikasi2Activity.this, "Out Of Memory Error.", Toast.LENGTH_SHORT).show();                }
                else if (error.getCause() instanceof MalformedURLException) {
                    //Error                    new LovelyStandardDialog(Notifikasi2Activity.this, LovelyStandardDialog.ButtonLayout.VERTICAL)
                            .setTopColorRes(R.color.colorPrimaryDark)
                            .setButtonsColorRes(R.color.colorPrimary)
                            .setIcon(R.drawable.ic_beritakm)
                            .setTitle("information")
                            .setMessage("Bad Request.")
                            .setPositiveButton(android.R.string.ok, null)
                            .show();
                } else{
                    //Error                    new LovelyStandardDialog(Notifikasi2Activity.this, LovelyStandardDialog.ButtonLayout.VERTICAL)
                            .setTopColorRes(R.color.colorPrimaryDark)
                            .setButtonsColorRes(R.color.colorPrimary)
                            .setIcon(R.drawable.ic_beritakm)
                            .setTitle("information")
                            .setMessage("An unknown error occurred." + error.toString())
                            .setPositiveButton(android.R.string.ok, null)
                            .show();                }
            }
        });
        // Adding request to request queue        //AppController.getInstance().addToRequestQueue(req);        Volley.newRequestQueue(Notifikasi2Activity.this).add(onscrolldata);    }
    
}



Berikut kita buat Model Class, berikut ini script nya :
public class NotifikasiModel {

    /**     * tnf_receiver_id : 185     * tnf_receiver_value : 1086043     * tnf_receiver_date :     * tnf_receiver_is_read : 0     * tnf_receiver_tnf_id : 179     * tnf_receiver_as_approval : 0     * tnf_receiver_type : 1     * tnf_id : 179     * tnf_title : [ Approved ] Cuti     * tnf_description : Meminta Persetujuan Cuti     * tnf_send_date : 16/10/2018 09:00:07     * tnf_send_NIP : 1693065     * tnf_ref_id : 118     * tnf_ref_table : Cuti_Model     * tnf_type : 1     * tnf_approval_id : 121     * tnf_approval_value : -1     * tnf_approval_value_approve : 1     * tnf_approval_value_reject : -1     * tnf_approval_date :     * tnf_approval_tnf_id : 179     * tnf_approval_by_NIP :     * tnf_approval_note_1 : Meminta Persetujuan Cuti     * tnf_approval_note_2 :     * x_tnf_approval_by_NIP : null     * x_nl_tnf_approval_by_NIP : null     * x_tnf_send_NIP : 1693065     * x_nl_tnf_send_NIP : ALJUMRIANA     * x_tnf_receiver_value : 1086043     * x_nl_tnf_receiver_value : KURNIA SANDYA PRAMESTHI     */
    private String tnf_receiver_id;    private String tnf_receiver_value;    private String tnf_receiver_date;    private String tnf_receiver_is_read;    private String tnf_receiver_tnf_id;    private String tnf_receiver_as_approval;    private String tnf_receiver_type;    private String tnf_id;    private String tnf_title;    private String tnf_description;    private String tnf_send_date;    private String tnf_send_NIP;    private String tnf_ref_id;    private String tnf_ref_table;    private String tnf_type;    private String tnf_approval_id;    private String tnf_approval_value;    private String tnf_approval_value_approve;    private String tnf_approval_value_reject;    private String tnf_approval_date;    private String tnf_approval_tnf_id;    private String tnf_approval_by_NIP;    private String tnf_approval_note_1;    private String tnf_approval_note_2;    private String x_tnf_approval_by_NIP;    private String x_nl_tnf_approval_by_NIP;    private String x_tnf_send_NIP;    private String x_nl_tnf_send_NIP;    private String x_tnf_receiver_value;    private String x_nl_tnf_receiver_value;
    public NotifikasiModel() {

    }

    public NotifikasiModel(String tnf_receiver_id, String tnf_receiver_value, String tnf_receiver_date, String tnf_receiver_is_read, String tnf_receiver_tnf_id, String tnf_receiver_as_approval, String tnf_receiver_type, String tnf_id, String tnf_title, String tnf_description, String tnf_send_date, String tnf_send_NIP, String tnf_ref_id, String tnf_ref_table, String tnf_type, String tnf_approval_id, String tnf_approval_value, String tnf_approval_value_approve, String tnf_approval_value_reject, String tnf_approval_date, String tnf_approval_tnf_id, String tnf_approval_by_NIP, String tnf_approval_note_1, String tnf_approval_note_2, String x_tnf_approval_by_NIP, String x_nl_tnf_approval_by_NIP, String x_tnf_send_NIP, String x_nl_tnf_send_NIP, String x_tnf_receiver_value, String x_nl_tnf_receiver_value) {
        this.tnf_receiver_id = tnf_receiver_id;        this.tnf_receiver_value = tnf_receiver_value;        this.tnf_receiver_date = tnf_receiver_date;        this.tnf_receiver_is_read = tnf_receiver_is_read;        this.tnf_receiver_tnf_id = tnf_receiver_tnf_id;        this.tnf_receiver_as_approval = tnf_receiver_as_approval;        this.tnf_receiver_type = tnf_receiver_type;        this.tnf_id = tnf_id;        this.tnf_title = tnf_title;        this.tnf_description = tnf_description;        this.tnf_send_date = tnf_send_date;        this.tnf_send_NIP = tnf_send_NIP;        this.tnf_ref_id = tnf_ref_id;        this.tnf_ref_table = tnf_ref_table;        this.tnf_type = tnf_type;        this.tnf_approval_id = tnf_approval_id;        this.tnf_approval_value = tnf_approval_value;        this.tnf_approval_value_approve = tnf_approval_value_approve;        this.tnf_approval_value_reject = tnf_approval_value_reject;        this.tnf_approval_date = tnf_approval_date;        this.tnf_approval_tnf_id = tnf_approval_tnf_id;        this.tnf_approval_by_NIP = tnf_approval_by_NIP;        this.tnf_approval_note_1 = tnf_approval_note_1;        this.tnf_approval_note_2 = tnf_approval_note_2;        this.x_tnf_approval_by_NIP = x_tnf_approval_by_NIP;        this.x_nl_tnf_approval_by_NIP = x_nl_tnf_approval_by_NIP;        this.x_tnf_send_NIP = x_tnf_send_NIP;        this.x_nl_tnf_send_NIP = x_nl_tnf_send_NIP;        this.x_tnf_receiver_value = x_tnf_receiver_value;        this.x_nl_tnf_receiver_value = x_nl_tnf_receiver_value;    }

    public String getTnf_receiver_id() {
        return tnf_receiver_id;    }

    public void setTnf_receiver_id(String tnf_receiver_id) {
        this.tnf_receiver_id = tnf_receiver_id;    }

    public String getTnf_receiver_value() {
        return tnf_receiver_value;    }

    public void setTnf_receiver_value(String tnf_receiver_value) {
        this.tnf_receiver_value = tnf_receiver_value;    }

    public String getTnf_receiver_date() {
        return tnf_receiver_date;    }

    public void setTnf_receiver_date(String tnf_receiver_date) {
        this.tnf_receiver_date = tnf_receiver_date;    }

    public String getTnf_receiver_is_read() {
        return tnf_receiver_is_read;    }

    public void setTnf_receiver_is_read(String tnf_receiver_is_read) {
        this.tnf_receiver_is_read = tnf_receiver_is_read;    }

    public String getTnf_receiver_tnf_id() {
        return tnf_receiver_tnf_id;    }

    public void setTnf_receiver_tnf_id(String tnf_receiver_tnf_id) {
        this.tnf_receiver_tnf_id = tnf_receiver_tnf_id;    }

    public String getTnf_receiver_as_approval() {
        return tnf_receiver_as_approval;    }

    public void setTnf_receiver_as_approval(String tnf_receiver_as_approval) {
        this.tnf_receiver_as_approval = tnf_receiver_as_approval;    }

    public String getTnf_receiver_type() {
        return tnf_receiver_type;    }

    public void setTnf_receiver_type(String tnf_receiver_type) {
        this.tnf_receiver_type = tnf_receiver_type;    }

    public String getTnf_id() {
        return tnf_id;    }

    public void setTnf_id(String tnf_id) {
        this.tnf_id = tnf_id;    }

    public String getTnf_title() {
        return tnf_title;    }

    public void setTnf_title(String tnf_title) {
        this.tnf_title = tnf_title;    }

    public String getTnf_description() {
        return tnf_description;    }

    public void setTnf_description(String tnf_description) {
        this.tnf_description = tnf_description;    }

    public String getTnf_send_date() {
        return tnf_send_date;    }

    public void setTnf_send_date(String tnf_send_date) {
        this.tnf_send_date = tnf_send_date;    }

    public String getTnf_send_NIP() {
        return tnf_send_NIP;    }

    public void setTnf_send_NIP(String tnf_send_NIP) {
        this.tnf_send_NIP = tnf_send_NIP;    }

    public String getTnf_ref_id() {
        return tnf_ref_id;    }

    public void setTnf_ref_id(String tnf_ref_id) {
        this.tnf_ref_id = tnf_ref_id;    }

    public String getTnf_ref_table() {
        return tnf_ref_table;    }

    public void setTnf_ref_table(String tnf_ref_table) {
        this.tnf_ref_table = tnf_ref_table;    }

    public String getTnf_type() {
        return tnf_type;    }

    public void setTnf_type(String tnf_type) {
        this.tnf_type = tnf_type;    }

    public String getTnf_approval_id() {
        return tnf_approval_id;    }

    public void setTnf_approval_id(String tnf_approval_id) {
        this.tnf_approval_id = tnf_approval_id;    }

    public String getTnf_approval_value() {
        return tnf_approval_value;    }

    public void setTnf_approval_value(String tnf_approval_value) {
        this.tnf_approval_value = tnf_approval_value;    }

    public String getTnf_approval_value_approve() {
        return tnf_approval_value_approve;    }

    public void setTnf_approval_value_approve(String tnf_approval_value_approve) {
        this.tnf_approval_value_approve = tnf_approval_value_approve;    }

    public String getTnf_approval_value_reject() {
        return tnf_approval_value_reject;    }

    public void setTnf_approval_value_reject(String tnf_approval_value_reject) {
        this.tnf_approval_value_reject = tnf_approval_value_reject;    }

    public String getTnf_approval_date() {
        return tnf_approval_date;    }

    public void setTnf_approval_date(String tnf_approval_date) {
        this.tnf_approval_date = tnf_approval_date;    }

    public String getTnf_approval_tnf_id() {
        return tnf_approval_tnf_id;    }

    public void setTnf_approval_tnf_id(String tnf_approval_tnf_id) {
        this.tnf_approval_tnf_id = tnf_approval_tnf_id;    }

    public String getTnf_approval_by_NIP() {
        return tnf_approval_by_NIP;    }

    public void setTnf_approval_by_NIP(String tnf_approval_by_NIP) {
        this.tnf_approval_by_NIP = tnf_approval_by_NIP;    }

    public String getTnf_approval_note_1() {
        return tnf_approval_note_1;    }

    public void setTnf_approval_note_1(String tnf_approval_note_1) {
        this.tnf_approval_note_1 = tnf_approval_note_1;    }

    public String getTnf_approval_note_2() {
        return tnf_approval_note_2;    }

    public void setTnf_approval_note_2(String tnf_approval_note_2) {
        this.tnf_approval_note_2 = tnf_approval_note_2;    }

    public String getX_tnf_approval_by_NIP() {
        return x_tnf_approval_by_NIP;    }

    public void setX_tnf_approval_by_NIP(String x_tnf_approval_by_NIP) {
        this.x_tnf_approval_by_NIP = x_tnf_approval_by_NIP;    }

    public String getX_nl_tnf_approval_by_NIP() {
        return x_nl_tnf_approval_by_NIP;    }

    public void setX_nl_tnf_approval_by_NIP(String x_nl_tnf_approval_by_NIP) {
        this.x_nl_tnf_approval_by_NIP = x_nl_tnf_approval_by_NIP;    }

    public String getX_tnf_send_NIP() {
        return x_tnf_send_NIP;    }

    public void setX_tnf_send_NIP(String x_tnf_send_NIP) {
        this.x_tnf_send_NIP = x_tnf_send_NIP;    }

    public String getX_nl_tnf_send_NIP() {
        return x_nl_tnf_send_NIP;    }

    public void setX_nl_tnf_send_NIP(String x_nl_tnf_send_NIP) {
        this.x_nl_tnf_send_NIP = x_nl_tnf_send_NIP;    }

    public String getX_tnf_receiver_value() {
        return x_tnf_receiver_value;    }

    public void setX_tnf_receiver_value(String x_tnf_receiver_value) {
        this.x_tnf_receiver_value = x_tnf_receiver_value;    }

    public String getX_nl_tnf_receiver_value() {
        return x_nl_tnf_receiver_value;    }

    public void setX_nl_tnf_receiver_value(String x_nl_tnf_receiver_value) {
        this.x_nl_tnf_receiver_value = x_nl_tnf_receiver_value;    }
}

setelah buat model class, selanjutnya buat adapter untuk recyclerview, berikut ini script nya :
import android.app.ProgressDialog;import android.content.Context;import android.content.Intent;import android.content.SharedPreferences;import android.graphics.Typeface;import android.net.ConnectivityManager;import android.net.NetworkInfo;import android.support.v7.widget.LinearLayoutManager;import android.support.v7.widget.RecyclerView;import android.view.LayoutInflater;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.ProgressBar;import android.widget.TextView;import android.widget.Toast;
import java.net.ConnectException;import java.net.MalformedURLException;import java.net.SocketException;import java.net.SocketTimeoutException;import java.util.List;
import com.android.volley.AuthFailureError;import com.android.volley.NetworkError;import com.android.volley.NoConnectionError;import com.android.volley.ParseError;import com.android.volley.Response;import com.android.volley.ServerError;import com.android.volley.TimeoutError;import com.android.volley.VolleyError;import com.android.volley.toolbox.JsonArrayRequest;import com.android.volley.toolbox.Volley;import com.perumnasapp.eselfie.AppVar;import com.perumnasapp.eselfie.ApproveLemburActivity;import com.perumnasapp.eselfie.DatacutiActivity;import com.perumnasapp.eselfie.KompetensiActivity;import com.perumnasapp.eselfie.R;import com.perumnasapp.eselfie.TambahKlaimActivity;import com.perumnasapp.eselfie.listpengajuancutibesarActivity;import com.yarolegovich.lovelydialog.LovelyStandardDialog;
import org.apache.http.conn.ConnectTimeoutException;import org.json.JSONArray;import org.json.JSONException;import org.json.JSONObject;import org.xmlpull.v1.XmlPullParserException;
import cn.pedant.SweetAlert.SweetAlertDialog;
public class NotifikasiAdapter extends RecyclerView.Adapter {
    private final int VIEW_ITEM = 1;    private final int VIEW_PROG = 0;    private List<NotifikasiModel> modeldataList;
    // The minimum amount of items to have below your current scroll position// before loading more.    private int visibleThreshold = 5;    private int lastVisibleItem, totalItemCount;    private boolean loading;    private OnLoadMoreNotif onLoadMoreListener;
    public NotifikasiAdapter(List<NotifikasiModel> modeldata, RecyclerView recyclerView) {
        modeldataList = modeldata;
        if (recyclerView.getLayoutManager() instanceof LinearLayoutManager) {

            final LinearLayoutManager linearLayoutManager = (LinearLayoutManager) recyclerView
                    .getLayoutManager();

            recyclerView
                    .addOnScrollListener(new RecyclerView.OnScrollListener() {
                        @Override                        public void onScrolled(RecyclerView recyclerView,                                               int dx, int dy) {
                            super.onScrolled(recyclerView, dx, dy);
                            totalItemCount = linearLayoutManager.getItemCount();                            lastVisibleItem = linearLayoutManager.findLastVisibleItemPosition();                            if (!loading && totalItemCount <= (lastVisibleItem + visibleThreshold)) {
                                // End has been reached                                // Do something                                //System.out.println("SERVER REPLIED:");
                                if (modeldataList.size() < 10) {
                                    loading = true;                                   // System.out.println("SERVER REPLIED:loading false");                                }
                                else {
                                    //System.out.println("SERVER REPLIED:loading true");                                    if (onLoadMoreListener != null) {
                                        onLoadMoreListener.onLoadMoreNotif();                                    }
                                    loading = true;                                }
                            }
                        }
                    });        }
    }

    @Override    public int getItemViewType(int position) {
        return modeldataList.get(position) != null ? VIEW_ITEM : VIEW_PROG;    }

    @Override    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent,                                                      int viewType) {
        RecyclerView.ViewHolder vh;        if (viewType == VIEW_ITEM) {
            View v = LayoutInflater.from(parent.getContext()).inflate(
                    R.layout.list_notif, parent, false);
            vh = new NotifikasiAdapter.StudentViewHolder(v);        } else {
            View v = LayoutInflater.from(parent.getContext()).inflate(
                    R.layout.lay_progress, parent, false);
            vh = new NotifikasiAdapter.ProgressViewHolder(v);        }
        return vh;    }

    @Override    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
        if (holder instanceof NotifikasiAdapter.StudentViewHolder) {
            NotifikasiModel singleStudent= (NotifikasiModel) modeldataList.get(position);
            ((NotifikasiAdapter.StudentViewHolder) holder).tgl_entry.setText(singleStudent.getTnf_send_date());            //((NotifikasiAdapter.StudentViewHolder) holder).status_respon.setText(String.valueOf(singleStudent.getStatus_respon()));            //(StudentViewHolder) holder).id_user.setText(String.valueOf(singleStudent.getId_user()));            //String dariString = String.valueOf(singleStudent.getX_nl_tnf_send_NIP());            String dariString = String.valueOf(singleStudent.getTnf_title());
            try {
                //dari                ((NotifikasiAdapter.StudentViewHolder) holder).nama_pengirim.setTextColor(((NotifikasiAdapter.StudentViewHolder) holder).contextx.getResources().getColor(R.color.colorText));                ((NotifikasiAdapter.StudentViewHolder) holder).nama_pengirim.setTypeface(Typeface.DEFAULT);                ((NotifikasiAdapter.StudentViewHolder) holder).nama_pengirim.setText(dariString);
                ((NotifikasiAdapter.StudentViewHolder) holder).isi_notifikasi.setTextColor(((NotifikasiAdapter.StudentViewHolder) holder).contextx.getResources().getColor(R.color.colorText));                ((NotifikasiAdapter.StudentViewHolder) holder).isi_notifikasi.setTypeface(Typeface.DEFAULT);                ((NotifikasiAdapter.StudentViewHolder) holder).isi_notifikasi.setText(String.valueOf(singleStudent.getTnf_description()));            } catch (Exception e) {
                //Log.e(TAG, "JSON Parsing error: " + e.getMessage());                Toast.makeText(((NotifikasiAdapter.StudentViewHolder) holder).contextx, e.toString(), Toast.LENGTH_LONG).show();            }

            ((NotifikasiAdapter.StudentViewHolder) holder).modeldata= singleStudent;        } else {
            ((NotifikasiAdapter.ProgressViewHolder) holder).progressBar.setIndeterminate(true);        }
    }

    public void setLoaded() {
        loading = false;    }

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

    public void setOnLoadMoreListener(OnLoadMoreNotif onLoadMoreListener) {
        this.onLoadMoreListener = onLoadMoreListener;    }

    public static class StudentViewHolder extends RecyclerView.ViewHolder {
        public TextView nama_pengirim;        public TextView id_notif, id_pengirim, longi_pengirim,lati_pengirim,id_user_penerima,status_respon,tgl_respon,tgl_entry,isi_notifikasi;        public NotifikasiModel modeldata;        public Context contextx;        public ImageView imgProfile, img1;        int success;        private String URL_UPDATE = "http://esurat.perumnas.co.id/esuratwebservice/updatesurat.php?";        private ProgressDialog pDialog;        String urll;        String IDANGGOTA;
        public StudentViewHolder(View v) {
            super(v);            contextx = v.getContext();            pDialog = new ProgressDialog(contextx, R.style.ProgressBar);            nama_pengirim = (TextView) v.findViewById(R.id.nama_pengirim);            imgProfile = (ImageView) v.findViewById(R.id.icon_profile);            status_respon = (TextView) v.findViewById(R.id.status_respon);            tgl_entry = (TextView) v.findViewById(R.id.tgl_entry);            isi_notifikasi = (TextView) v.findViewById(R.id.isi_notifikasi);            LinearLayout navButton4 = (LinearLayout) v.findViewById(R.id.container);
            navButton4.setOnClickListener(new OnClickListener() {
                @Override                public void onClick(View v) {
                    if(modeldata.getTnf_ref_table().equals("Cuti_Model")) {
                        //Getting out sharedpreferences                        SharedPreferences preferences1 = contextx.getSharedPreferences(AppVar.SHARED_status, Context.MODE_PRIVATE);                        //Getting editor                        SharedPreferences.Editor editor1 = preferences1.edit();
                        //Putting blank value to email                        editor1.putString(AppVar.nilai_status, "1");                        editor1.putString(AppVar.id_status,modeldata.getTnf_id());
                        //Saving the sharedpreferences                        editor1.commit();
                        getdata();                    }
                    else if(modeldata.getTnf_ref_table().equals("klaimkesehatan_Model")) {
                       getstatuss();                    }
                    else if(modeldata.getTnf_ref_table().equals("Cuti_Besar")) {
                        Intent ii=new Intent(contextx, listpengajuancutibesarActivity.class);                        ii.putExtra("pribadi", "0");                        ii.putExtra("idcutibesar", modeldata.getTnf_ref_id());                        contextx.startActivity(ii);                        //getstatuss();                    }
                    else if(modeldata.getTnf_ref_table().equals("SPKL_Model")) {
                        getstatuss();                        /*if (modeldata.getTnf_receiver_as_approval().equals("0")) {                            SharedPreferences preferences1 = contextx.getSharedPreferences(AppVar.SHARED_recs, Context.MODE_PRIVATE);                            //Getting editor                            SharedPreferences.Editor editor1 = preferences1.edit();
                            //Putting blank value to email                            editor1.putString(AppVar.idrecev,modeldata.getTnf_receiver_tnf_id());
                            //Saving the sharedpreferences                            editor1.commit();
                            //Getting out sharedpreferences                            SharedPreferences preferences = contextx.getSharedPreferences(AppVar.SHARED_PREF_lembur, Context.MODE_PRIVATE);                            //Getting editor                            SharedPreferences.Editor editor = preferences.edit();
                            //Putting blank value to email                            editor.putString(AppVar.id_lembur, modeldata.getTnf_ref_id());
                            //Saving the sharedpreferences                            editor.commit();
                            Intent intent = new Intent(contextx, ApproveLemburActivity.class);                            contextx.startActivity(intent);                        }                        else if(modeldata.getTnf_ref_table().equals("Kompetensi_Model")) {                            if (modeldata.getTnf_receiver_as_approval().equals("0")) {

                                Intent intent = new Intent(contextx, KompetensiActivity.class);                                contextx.startActivity(intent);                            }                        }                        else {
                        }*/
                        /*//Getting out sharedpreferences                        SharedPreferences preferences1 = contextx.getSharedPreferences(AppVar.SHARED_status, Context.MODE_PRIVATE);                        //Getting editor                        SharedPreferences.Editor editor1 = preferences1.edit();
                        //Putting blank value to email                        editor1.putString(AppVar.nilai_status, "1");                        editor1.putString(AppVar.id_status,modeldata.getTnf_id());
                        //Saving the sharedpreferences                        editor1.commit();*/                    }
                    else if(modeldata.getTnf_ref_table().equals("Kompetensi_Model")) {
                        if (modeldata.getTnf_receiver_as_approval().equals("0")) {
                            Intent intent = new Intent(contextx, KompetensiActivity.class);                            contextx.startActivity(intent);                        }
                    }
                }
            });
        }

        private void showDialog() {
            if (!pDialog.isShowing())
                pDialog.show();        }

        private void hideDialog() {
            if (pDialog.isShowing())
                pDialog.dismiss();        }

        String status_data = "";
        public void getstatuss() {
            String kodejab;            SharedPreferences sharedPreferences = contextx.getSharedPreferences(AppVar.SHARED_PREF_NAME, Context.MODE_PRIVATE);            kodejab  = sharedPreferences.getString(AppVar.nip_zs_simpeg, "");
            urll = AppVar.lihatnotifxd + modeldata.getTnf_ref_table() + "&idd=" + modeldata.getTnf_ref_id() + "&idtf=" + modeldata.getTnf_id();            //Toast.makeText(contextx, urll, Toast.LENGTH_SHORT).show();            pDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);            pDialog.setMessage("Proses ...");            pDialog.setIndeterminate(true);            pDialog.setCanceledOnTouchOutside(false);            showDialog();
            try {
                //Toast.makeText(contextx, urll, Toast.LENGTH_SHORT).show();                JsonArrayRequest reqsubkategori = new JsonArrayRequest(urll,                        new Response.Listener<JSONArray>() {
                            @Override                            public void onResponse(JSONArray response) {
                                // Log.d(TAG, response.toString());
                                try {
                                    //Toast.makeText(contextx, response.toString(), Toast.LENGTH_SHORT).show();                                    hideDialog();
                                    if (response.length() > 0) {
                                        for (int i = 0; i < response.length(); i++) {
                                            JSONObject person = (JSONObject) response
                                                    .get(i);
                                            status_data = person.getString("status_data");
                                            if (person.getString("tabel").equals("SPKL_Model")){
                                                if (status_data.equals("0")) {
                                                    SharedPreferences preferences1 = contextx.getSharedPreferences(AppVar.SHARED_recs, Context.MODE_PRIVATE);                                                    //Getting editor                                                    SharedPreferences.Editor editor1 = preferences1.edit();
                                                    //Putting blank value to email                                                    editor1.putString(AppVar.idrecev, modeldata.getTnf_receiver_tnf_id());
                                                    //Saving the sharedpreferences                                                    editor1.commit();
                                                    //Getting out sharedpreferences                                                    SharedPreferences preferences = contextx.getSharedPreferences(AppVar.SHARED_PREF_lembur, Context.MODE_PRIVATE);                                                    //Getting editor                                                    SharedPreferences.Editor editor = preferences.edit();
                                                    //Putting blank value to email                                                    editor.putString(AppVar.id_lembur, modeldata.getTnf_ref_id());
                                                    //Saving the sharedpreferences                                                    editor.commit();
                                                    Intent intent = new Intent(contextx, ApproveLemburActivity.class);                                                    contextx.startActivity(intent);                                                }
                                                else if (status_data.equals("1")) {
                                                    /*.setPositiveButton(android.R.string.ok, new View.OnClickListener() {                                                                @Override                                                                public void onClick(View v) {                                                                    Toast.makeText(contextx, "positive clicked", Toast.LENGTH_SHORT).show();                                                                }                                                            })*/                                                    new LovelyStandardDialog(contextx, LovelyStandardDialog.ButtonLayout.VERTICAL)
                                                            .setTopColorRes(R.color.colorPrimaryDark)
                                                            .setButtonsColorRes(R.color.colorPrimary)
                                                            .setIcon(R.drawable.ic_beritakm)
                                                            .setTitle("Informasi")
                                                            .setMessage("SPKL Sudah Diapprove")
                                                            .setPositiveButton(android.R.string.yes, null)
                                                            .show();
                                                }
                                                else if (status_data.equals("2")) {
                                                    new LovelyStandardDialog(contextx, LovelyStandardDialog.ButtonLayout.VERTICAL)
                                                            .setTopColorRes(R.color.colorPrimaryDark)
                                                            .setButtonsColorRes(R.color.colorPrimary)
                                                            .setIcon(R.drawable.ic_beritakm)
                                                            .setTitle("Informasi")
                                                            .setMessage("SPKL Sudah Direject")
                                                            .setPositiveButton(android.R.string.yes, null)
                                                            .show();                                                }
                                            }
                                            else if (person.getString("tabel").equals("klaimkesehatan_Model")){
                                                if (status_data.equals("0")) {
                                                    //Getting out sharedpreferences                                                    SharedPreferences preferences1 = contextx.getSharedPreferences(AppVar.SHARED_status, Context.MODE_PRIVATE);                                                    //Getting editor                                                    SharedPreferences.Editor editor1 = preferences1.edit();
                                                    //Putting blank value to email                                                    editor1.putString(AppVar.nilai_status, "1");                                                    editor1.putString(AppVar.id_status,modeldata.getTnf_id());
                                                    //Saving the sharedpreferences                                                    editor1.commit();
                                                    //Getting out sharedpreferences                                                    SharedPreferences preferences = contextx.getSharedPreferences(AppVar.SHARED_PREF_klaim, Context.MODE_PRIVATE);                                                    //Getting editor                                                    SharedPreferences.Editor editor = preferences.edit();
                                                    //Putting blank value to email                                                    editor.putString(AppVar.id_claim, modeldata.getTnf_ref_id());
                                                    //Saving the sharedpreferences                                                    editor.commit();
                                                    Intent intent = new Intent(contextx, TambahKlaimActivity.class);                                                    contextx.startActivity(intent);                                                }
                                                else if (status_data.equals("2")) {
                                                    new LovelyStandardDialog(contextx, LovelyStandardDialog.ButtonLayout.VERTICAL)
                                                            .setTopColorRes(R.color.colorPrimaryDark)
                                                            .setButtonsColorRes(R.color.colorPrimary)
                                                            .setIcon(R.drawable.ic_beritakm)
                                                            .setTitle("Informasi")
                                                            .setMessage("Klaim Kesehatan Sudah Diapprove")
                                                            .setPositiveButton(android.R.string.yes, null)
                                                            .show();                                                    /*SweetAlertDialog pDialog1 = new SweetAlertDialog(contextx, SweetAlertDialog.SUCCESS_TYPE);                                                    pDialog1.setTitleText("Informasi");                                                    pDialog1.setContentText("Klaim Kesehatan Sudah Diapprove");                                                    pDialog1.setCancelable(false);                                                    pDialog1.setConfirmText("OK");                                                    pDialog1.setConfirmClickListener(null);                                                    pDialog1.show();*/                                                }
                                                else if (status_data.equals("3")) {
                                                   /* SweetAlertDialog pDialog1 = new SweetAlertDialog(contextx, SweetAlertDialog.ERROR_TYPE);                                                    pDialog1.setTitleText("Informasi");                                                    pDialog1.setContentText("Klaim Kesehatan Sudah Direject");                                                    pDialog1.setCancelable(false);                                                    pDialog1.setConfirmText("OK");                                                    pDialog1.setConfirmClickListener(null);                                                    pDialog1.show();*/                                                    new LovelyStandardDialog(contextx, LovelyStandardDialog.ButtonLayout.VERTICAL)
                                                            .setTopColorRes(R.color.colorPrimaryDark)
                                                            .setButtonsColorRes(R.color.colorPrimary)
                                                            .setIcon(R.drawable.ic_beritakm)
                                                            .setTitle("Informasi")
                                                            .setMessage("Klaim Kesehatan Sudah Direject")
                                                            .setPositiveButton(android.R.string.yes, null)
                                                            .show();                                                }

                                            }
                                        }
                                    }

                                } catch (JSONException e) {
                                    hideDialog();
                                    new LovelyStandardDialog(contextx, LovelyStandardDialog.ButtonLayout.VERTICAL)
                                            .setTopColorRes(R.color.colorPrimaryDark)
                                            .setButtonsColorRes(R.color.colorPrimary)
                                            .setIcon(R.drawable.ic_beritakm)
                                            .setTitle("Information")
                                            .setMessage("Parse Error (because of invalid json or xml).")
                                            .setPositiveButton(android.R.string.ok, null)
                                            .show();                                   // e.printStackTrace();                                   // Toast.makeText(contextx,                                   //         "Error: " + e.getMessage(),                                    //        Toast.LENGTH_LONG).show();                                }
                            }
                        }, new Response.ErrorListener() {
                    @Override                    public void onErrorResponse(VolleyError error) {
                        hideDialog();
                        if (error instanceof TimeoutError || error.getCause() instanceof SocketTimeoutException
                                || error.getCause() instanceof ConnectTimeoutException
                                || error.getCause() instanceof SocketException) {
                            //Time out error                            new LovelyStandardDialog(contextx, LovelyStandardDialog.ButtonLayout.VERTICAL)
                                    .setTopColorRes(R.color.colorPrimaryDark)
                                    .setButtonsColorRes(R.color.colorPrimary)
                                    .setIcon(R.drawable.ic_beritakm)
                                    .setTitle("Information")
                                    .setMessage("Connection timeout error. Please Try Again")
                                    .setPositiveButton(android.R.string.ok, null)
                                    .show();
                        }else if(error instanceof NoConnectionError){
                            //net work error                            ConnectivityManager cm = (ConnectivityManager) contextx                                    .getSystemService(Context.CONNECTIVITY_SERVICE);                            NetworkInfo activeNetwork = null;
                            if (cm != null) {
                                activeNetwork = cm.getActiveNetworkInfo();                            }
                            if(activeNetwork != null && activeNetwork.isConnectedOrConnecting()){
                                //Toast.makeText(getActivity(), "Server is not connected to internet.",                                //       Toast.LENGTH_SHORT).show();                                new LovelyStandardDialog(contextx, LovelyStandardDialog.ButtonLayout.VERTICAL)
                                        .setTopColorRes(R.color.colorPrimaryDark)
                                        .setButtonsColorRes(R.color.colorPrimary)
                                        .setIcon(R.drawable.ic_beritakm)
                                        .setTitle("Information")
                                        .setMessage("No Internet Connection.")
                                        .setPositiveButton(android.R.string.ok, null)
                                        .show();                            } else {
                                // Toast.makeText(getActivity(), "Your device is not connected to internet.",                                //       Toast.LENGTH_SHORT).show();                                new LovelyStandardDialog(contextx, LovelyStandardDialog.ButtonLayout.VERTICAL)
                                        .setTopColorRes(R.color.colorPrimaryDark)
                                        .setButtonsColorRes(R.color.colorPrimary)
                                        .setIcon(R.drawable.ic_beritakm)
                                        .setTitle("Information")
                                        .setMessage("No Internet Connection.")
                                        .setPositiveButton(android.R.string.ok, null)
                                        .show();                            }



                        } else if (error instanceof AuthFailureError) {
                            //error                            new LovelyStandardDialog(contextx, LovelyStandardDialog.ButtonLayout.VERTICAL)
                                    .setTopColorRes(R.color.colorPrimaryDark)
                                    .setButtonsColorRes(R.color.colorPrimary)
                                    .setIcon(R.drawable.ic_beritakm)
                                    .setTitle("Information")
                                    .setMessage("server couldn't find the authenticated request.")
                                    .setPositiveButton(android.R.string.ok, null)
                                    .show();
                        } else if (error instanceof ServerError || error.getCause() instanceof ServerError) {
                            //Erroor                            new LovelyStandardDialog(contextx, LovelyStandardDialog.ButtonLayout.VERTICAL)
                                    .setTopColorRes(R.color.colorPrimaryDark)
                                    .setButtonsColorRes(R.color.colorPrimary)
                                    .setIcon(R.drawable.ic_beritakm)
                                    .setTitle("Information")
                                    .setMessage("Server is not responding..")
                                    .setPositiveButton(android.R.string.ok, null)
                                    .show();                        } else if (error instanceof NetworkError || error.getCause() instanceof ConnectException || (error.getCause().getMessage() != null                                && error.getCause().getMessage().contains("connection"))) {
                            //Error                            new LovelyStandardDialog(contextx, LovelyStandardDialog.ButtonLayout.VERTICAL)
                                    .setTopColorRes(R.color.colorPrimaryDark)
                                    .setButtonsColorRes(R.color.colorPrimary)
                                    .setIcon(R.drawable.ic_beritakm)
                                    .setTitle("Information")
                                    .setMessage("No Internet Connection. Please check your connection!")
                                    .setPositiveButton(android.R.string.ok, null)
                                    .show();
                        } else if (error instanceof ParseError || error.getCause() instanceof IllegalStateException
                                || error.getCause() instanceof JSONException
                                || error.getCause() instanceof XmlPullParserException) {
                            //Error                            new LovelyStandardDialog(contextx, LovelyStandardDialog.ButtonLayout.VERTICAL)
                                    .setTopColorRes(R.color.colorPrimaryDark)
                                    .setButtonsColorRes(R.color.colorPrimary)
                                    .setIcon(R.drawable.ic_beritakm)
                                    .setTitle("Information")
                                    .setMessage("Parse Error (because of invalid json or xml).")
                                    .setPositiveButton(android.R.string.ok, null)
                                    .show();
                        }
                        else if (error.getCause() instanceof OutOfMemoryError){
                            //Toast.makeText(getActivity(), "Out Of Memory Error.", Toast.LENGTH_SHORT).show();                        }
                        else if (error.getCause() instanceof MalformedURLException) {
                            //Error                            new LovelyStandardDialog(contextx, LovelyStandardDialog.ButtonLayout.VERTICAL)
                                    .setTopColorRes(R.color.colorPrimaryDark)
                                    .setButtonsColorRes(R.color.colorPrimary)
                                    .setIcon(R.drawable.ic_beritakm)
                                    .setTitle("Information")
                                    .setMessage("Bad Request.")
                                    .setPositiveButton(android.R.string.ok, null)
                                    .show();
                        } else{
                            //Error                            new LovelyStandardDialog(contextx, LovelyStandardDialog.ButtonLayout.VERTICAL)
                                    .setTopColorRes(R.color.colorPrimaryDark)
                                    .setButtonsColorRes(R.color.colorPrimary)
                                    .setIcon(R.drawable.ic_beritakm)
                                    .setTitle("Information")
                                    .setMessage("An unknown error occurred." + error.toString())
                                    .setPositiveButton(android.R.string.ok, null)
                                    .show();                        }
                        //VolleyLog.d(TAG, "Error: " + error.getMessage());                        //Toast.makeText(contextx,"Error: stu1 " +                          //      error.getMessage(), Toast.LENGTH_SHORT).show();                    }
                });
                // Adding request to request queue                //AppController.getInstance().addToRequestQueue(req);                Volley.newRequestQueue(contextx).add(reqsubkategori);            }
            catch (Exception e) {
                Toast.makeText(contextx, "Error: " + e.toString(), Toast.LENGTH_LONG).show();            }
        }

        public void getdata() {
            //Creating a shared preference            SharedPreferences sharedPreferences2 = contextx.getSharedPreferences(AppVar.SHARED_PREF_EDITCUTI, Context.MODE_PRIVATE);
            //Creating editor to store values to shared preferences            SharedPreferences.Editor editor2 = sharedPreferences2.edit();
            editor2.putString(AppVar.NO_USUL, "");            editor2.putString(AppVar.TGLUSUL, "");            editor2.putString(AppVar.TAHUNPERIODE, "");            editor2.putString(AppVar.JENISCUTI, "");            editor2.putString(AppVar.TGLMULAICUTI, "");            editor2.putString(AppVar.TGLSELESAICUTI,"");            editor2.putString(AppVar.CUTIYGDIAMBIL, "");            editor2.putString(AppVar.IDT_CUTI,"");            editor2.putString(AppVar.KETCUTI,"");            editor2.commit();
            String kodejab;            SharedPreferences sharedPreferences = contextx.getSharedPreferences(AppVar.SHARED_PREF_NAME, Context.MODE_PRIVATE);            kodejab  = sharedPreferences.getString(AppVar.nip_zs_simpeg, "");

            //Toast.makeText(contextx, modeldata.getTnf_ref_id(), Toast.LENGTH_SHORT).show();
            urll = AppVar.lihatnotif + modeldata.getTnf_send_NIP() + "&IDT_Cuti=" + modeldata.getTnf_ref_id() + "&idtf=" + modeldata.getTnf_id();            //Toast.makeText(contextx, urll, Toast.LENGTH_SHORT).show();            pDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);            pDialog.setMessage("Proses ...");            pDialog.setIndeterminate(true);            pDialog.setCanceledOnTouchOutside(false);            showDialog();
            try {
                //Toast.makeText(contextx, urll, Toast.LENGTH_SHORT).show();                JsonArrayRequest reqsubkategori = new JsonArrayRequest(urll,                        new Response.Listener<JSONArray>() {
                            @Override                            public void onResponse(JSONArray response) {
                               // Log.d(TAG, response.toString());
                                try {
                                    //Toast.makeText(contextx, response.toString(), Toast.LENGTH_SHORT).show();                                    hideDialog();
                                    if (response.length() > 0) {
                                        for (int i = 0; i < response.length(); i++) {
                                            JSONObject person = (JSONObject) response
                                                    .get(i);
                                            if (person.getString("statuspesan").equals("0")){
                                                status_data = "0";                                            }
                                            else {
                                                //Creating a shared preference                                                SharedPreferences sharedPreferences = contextx.getSharedPreferences(AppVar.SHARED_PREF_EDITCUTI, Context.MODE_PRIVATE);
                                                //Creating editor to store values to shared preferences                                                SharedPreferences.Editor editor = sharedPreferences.edit();
                                                editor.putString(AppVar.NO_USUL, "-");                                                editor.putString(AppVar.TGLUSUL, person.getString("tgl_usul"));                                                editor.putString(AppVar.TAHUNPERIODE, person.getString("thn_periode"));                                                editor.putString(AppVar.JENISCUTI, person.getString("jns_cuti"));                                                editor.putString(AppVar.TGLMULAICUTI, person.getString("tgl_m"));                                                editor.putString(AppVar.TGLSELESAICUTI,person.getString("tgl_s"));                                                editor.putString(AppVar.CUTIYGDIAMBIL, person.getString("jumlah_cuti"));                                                editor.putString(AppVar.IDT_CUTI,person.getString("IDT_Cuti"));                                                editor.putString(AppVar.KETCUTI,person.getString("ket_cuti"));                                                status_data = person.getString("status_data");
                                                editor.commit();                                            }


                                            //modeldataList.add(new CutiModel( IDT_Cuti,  NIP,  kode_unor,  kode_jab,  kode_golru,  no_usul,  tgl_usul,  thn_periode,  jns_cuti,  tgl_m,  tgl_s,  jumlah_cuti,  ket_cuti,  no_sk_cuti,  tgl_sk_cuti,  status_data,  kode_jpeg,  f_namalengkap,  nama_pangkat,  nama_golru,  nama_jab,  kode_unker,  nama_unker,  nama_unor,  unor_unker,  bulan));                                        }

                                        if (status_data.equals("1")) {
                                            new LovelyStandardDialog(contextx, LovelyStandardDialog.ButtonLayout.VERTICAL)
                                                    .setTopColorRes(R.color.colorPrimaryDark)
                                                    .setButtonsColorRes(R.color.colorPrimary)
                                                    .setIcon(R.drawable.ic_beritakm)
                                                    .setTitle("Informasi")
                                                    .setMessage("Cuti Sudah Diapprove")
                                                    .setPositiveButton(android.R.string.ok, null)
                                                    .show();                                        }
                                        else if (status_data.equals("3")) {
                                            new LovelyStandardDialog(contextx, LovelyStandardDialog.ButtonLayout.VERTICAL)
                                                    .setTopColorRes(R.color.colorPrimaryDark)
                                                    .setButtonsColorRes(R.color.colorPrimary)
                                                    .setIcon(R.drawable.ic_beritakm)
                                                    .setTitle("Informasi")
                                                    .setMessage("Cuti Sudah Direject")
                                                    .setPositiveButton(android.R.string.ok, null)
                                                    .show();
                                        }
                                        else if (status_data.equals("0")) {
                                            new LovelyStandardDialog(contextx, LovelyStandardDialog.ButtonLayout.VERTICAL)
                                                    .setTopColorRes(R.color.colorPrimaryDark)
                                                    .setButtonsColorRes(R.color.colorPrimary)
                                                    .setIcon(R.drawable.ic_beritakm)
                                                    .setTitle("Informasi")
                                                    .setMessage("Tidak Ada Data Cuti Tersebut")
                                                    .setPositiveButton(android.R.string.ok, null)
                                                    .show();

                                        }
                                        else {
                                            contextx.startActivity(new Intent(contextx,DatacutiActivity.class));                                        }


                                    }

                                } catch (JSONException e) {
                                    hideDialog();
                                    new LovelyStandardDialog(contextx, LovelyStandardDialog.ButtonLayout.VERTICAL)
                                            .setTopColorRes(R.color.colorPrimaryDark)
                                            .setButtonsColorRes(R.color.colorPrimary)
                                            .setIcon(R.drawable.ic_beritakm)
                                            .setTitle("Information")
                                            .setMessage("Parse Error (because of invalid json or xml).")
                                            .setPositiveButton(android.R.string.ok, null)
                                            .show();                                    //e.printStackTrace();                                    //Toast.makeText(contextx,                                    //        "Error: " + e.getMessage(),                                     //       Toast.LENGTH_LONG).show();                                }
                            }
                        }, new Response.ErrorListener() {
                    @Override                    public void onErrorResponse(VolleyError error) {
                        hideDialog();
                        if (error instanceof TimeoutError || error.getCause() instanceof SocketTimeoutException
                                || error.getCause() instanceof ConnectTimeoutException
                                || error.getCause() instanceof SocketException) {
                            //Time out error                            new LovelyStandardDialog(contextx, LovelyStandardDialog.ButtonLayout.VERTICAL)
                                    .setTopColorRes(R.color.colorPrimaryDark)
                                    .setButtonsColorRes(R.color.colorPrimary)
                                    .setIcon(R.drawable.ic_beritakm)
                                    .setTitle("Information")
                                    .setMessage("Connection timeout error. Please Try Again")
                                    .setPositiveButton(android.R.string.ok, null)
                                    .show();
                        }else if(error instanceof NoConnectionError){
                            //net work error                            ConnectivityManager cm = (ConnectivityManager) contextx                                    .getSystemService(Context.CONNECTIVITY_SERVICE);                            NetworkInfo activeNetwork = null;
                            if (cm != null) {
                                activeNetwork = cm.getActiveNetworkInfo();                            }
                            if(activeNetwork != null && activeNetwork.isConnectedOrConnecting()){
                                //Toast.makeText(getActivity(), "Server is not connected to internet.",                                //       Toast.LENGTH_SHORT).show();                                new LovelyStandardDialog(contextx, LovelyStandardDialog.ButtonLayout.VERTICAL)
                                        .setTopColorRes(R.color.colorPrimaryDark)
                                        .setButtonsColorRes(R.color.colorPrimary)
                                        .setIcon(R.drawable.ic_beritakm)
                                        .setTitle("Information")
                                        .setMessage("No Internet Connection.")
                                        .setPositiveButton(android.R.string.ok, null)
                                        .show();                            } else {
                                // Toast.makeText(getActivity(), "Your device is not connected to internet.",                                //       Toast.LENGTH_SHORT).show();                                new LovelyStandardDialog(contextx, LovelyStandardDialog.ButtonLayout.VERTICAL)
                                        .setTopColorRes(R.color.colorPrimaryDark)
                                        .setButtonsColorRes(R.color.colorPrimary)
                                        .setIcon(R.drawable.ic_beritakm)
                                        .setTitle("Information")
                                        .setMessage("No Internet Connection.")
                                        .setPositiveButton(android.R.string.ok, null)
                                        .show();                            }



                        } else if (error instanceof AuthFailureError) {
                            //error                            new LovelyStandardDialog(contextx, LovelyStandardDialog.ButtonLayout.VERTICAL)
                                    .setTopColorRes(R.color.colorPrimaryDark)
                                    .setButtonsColorRes(R.color.colorPrimary)
                                    .setIcon(R.drawable.ic_beritakm)
                                    .setTitle("Information")
                                    .setMessage("server couldn't find the authenticated request.")
                                    .setPositiveButton(android.R.string.ok, null)
                                    .show();
                        } else if (error instanceof ServerError || error.getCause() instanceof ServerError) {
                            //Erroor                            new LovelyStandardDialog(contextx, LovelyStandardDialog.ButtonLayout.VERTICAL)
                                    .setTopColorRes(R.color.colorPrimaryDark)
                                    .setButtonsColorRes(R.color.colorPrimary)
                                    .setIcon(R.drawable.ic_beritakm)
                                    .setTitle("Information")
                                    .setMessage("Server is not responding..")
                                    .setPositiveButton(android.R.string.ok, null)
                                    .show();                        } else if (error instanceof NetworkError || error.getCause() instanceof ConnectException || (error.getCause().getMessage() != null                                && error.getCause().getMessage().contains("connection"))) {
                            //Error                            new LovelyStandardDialog(contextx, LovelyStandardDialog.ButtonLayout.VERTICAL)
                                    .setTopColorRes(R.color.colorPrimaryDark)
                                    .setButtonsColorRes(R.color.colorPrimary)
                                    .setIcon(R.drawable.ic_beritakm)
                                    .setTitle("Information")
                                    .setMessage("No Internet Connection. Please check your connection!")
                                    .setPositiveButton(android.R.string.ok, null)
                                    .show();
                        } else if (error instanceof ParseError || error.getCause() instanceof IllegalStateException
                                || error.getCause() instanceof JSONException
                                || error.getCause() instanceof XmlPullParserException) {
                            //Error                            new LovelyStandardDialog(contextx, LovelyStandardDialog.ButtonLayout.VERTICAL)
                                    .setTopColorRes(R.color.colorPrimaryDark)
                                    .setButtonsColorRes(R.color.colorPrimary)
                                    .setIcon(R.drawable.ic_beritakm)
                                    .setTitle("Information")
                                    .setMessage("Parse Error (because of invalid json or xml).")
                                    .setPositiveButton(android.R.string.ok, null)
                                    .show();
                        }
                        else if (error.getCause() instanceof OutOfMemoryError){
                            //Toast.makeText(getActivity(), "Out Of Memory Error.", Toast.LENGTH_SHORT).show();                        }
                        else if (error.getCause() instanceof MalformedURLException) {
                            //Error                            new LovelyStandardDialog(contextx, LovelyStandardDialog.ButtonLayout.VERTICAL)
                                    .setTopColorRes(R.color.colorPrimaryDark)
                                    .setButtonsColorRes(R.color.colorPrimary)
                                    .setIcon(R.drawable.ic_beritakm)
                                    .setTitle("Information")
                                    .setMessage("Bad Request.")
                                    .setPositiveButton(android.R.string.ok, null)
                                    .show();
                        } else{
                            //Error                            new LovelyStandardDialog(contextx, LovelyStandardDialog.ButtonLayout.VERTICAL)
                                    .setTopColorRes(R.color.colorPrimaryDark)
                                    .setButtonsColorRes(R.color.colorPrimary)
                                    .setIcon(R.drawable.ic_beritakm)
                                    .setTitle("Information")
                                    .setMessage("An unknown error occurred." + error.toString())
                                    .setPositiveButton(android.R.string.ok, null)
                                    .show();                        }
                        //VolleyLog.d(TAG, "Error: " + error.getMessage());                       // Toast.makeText(contextx,"Error: stu1 " +                       //         error.getMessage(), Toast.LENGTH_SHORT).show();                    }
                });
                // Adding request to request queue                //AppController.getInstance().addToRequestQueue(req);                Volley.newRequestQueue(contextx).add(reqsubkategori);            }
            catch (Exception e) {
                Toast.makeText(contextx, "Error: " + e.toString(), Toast.LENGTH_LONG).show();            }
        }
    }

    public static class ProgressViewHolder extends RecyclerView.ViewHolder {
        public ProgressBar progressBar;
        public ProgressViewHolder(View v) {
            super(v);            progressBar = (ProgressBar) v.findViewById(R.id.progressBar1);        }
    }

}

selanjutnya kita buat interface, berikut ini script nya :
public interface OnLoadMoreNotif {
    void onLoadMoreNotif();}

setelah selesai, kita build dan running projectnya, maka hasilnya bisa dilihat pada video dibawah ini :




Demikian tutorial kali ini. semoga bermanfaat.
READ MORE
SHARE :

Bonjour & Welcome









my other blog

Hard-working person on the way to the success. Kontak Person : vamosespana@ymail.com

other blog : http://shenda94.tumblr.com/


Link Cepat

  • IT
  • bumn
  • pns
  • swasta
  • Popular
  • Recent
  • Comments

Instagram

About

Situs berisi tutorial tentang coding, Lowongan Kerja dll. #BUMN #PNS #SWASTA.

Popular Posts

Link Cepat

  • IT
  • android
  • loker
  • lowongan kerja

Copyright #Rhena. Mershenda Kasperky . All Rights Reserved.