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.