Search code examples
androidjsonlistviewfloating-action-button

Showing JSON data in main screen


the json data only appear if the floating action button is clicked, i want to show my json data directly on the main screen not via floating action button, how to do that ?

heres my code

main_activity.java

public class MainActivity extends AppCompatActivity {  

private ListView listView;  
private ArrayList<MyDataModel> list;  
private MyArrayAdapter adapter;  

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

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

  /**  
  * Array List for Binding Data from JSON to this List  
  */  
   list = new ArrayList<>();  
  /**  
  * Binding that List to Adapter  
  */  
 adapter = new MyArrayAdapter(this, list);  

 /**  
  * Getting List and Setting List Adapter  
  */  
 listView = (ListView) findViewById(R.id.listView);  
 listView.setAdapter(adapter);  
 listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {  
   @Override  
   public void onItemClick(AdapterView<?> parent, View view, int position, long id) {  
     Snackbar.make(findViewById(R.id.parentLayout), list.get(position).getName() + " => " + list.get(position).getPhone(), Snackbar.LENGTH_LONG).show();  
   }  
 });  

 /**  
  * Just to know onClick and Printing Hello Toast in Center.  
  */  
 Toast toast = Toast.makeText(getApplicationContext(), "Click on         

 FloatingActionButton to Load JSON", Toast.LENGTH_LONG);  
 toast.setGravity(Gravity.CENTER, 0, 0);  
 toast.show();  
 FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);  
 fab.setOnClickListener(new View.OnClickListener() {  
   @Override  
   public void onClick(@NonNull View view) {  

     /**  
      * Checking Internet Connection  
      */  
     if (InternetConnection.checkConnection(getApplicationContext())) {  
       new GetDataTask().execute();  
     } else {  
       Snackbar.make(view, "Internet Connection Not Available", Snackbar.LENGTH_LONG).show();  
     }  
   }  
 });  
 }  

 /**  
* Creating Get Data Task for Getting Data From Web  
*/  
 class GetDataTask extends AsyncTask<Void, Void, Void> {  

 ProgressDialog dialog; 

  @Override  
 protected void onPostExecute(Void aVoid) {  
   super.onPostExecute(aVoid);  
   dialog.dismiss();  
   /**  
    * Checking if List size if more than zero then  
    * Update ListView  
    */  
   if(list.size() > 0) {  
     adapter.notifyDataSetChanged();  
   } else {  
     Snackbar.make(findViewById(R.id.parentLayout), "No Data Found", Snackbar.LENGTH_LONG).show();  
   }  
  }  
 }  
}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>  
<android.support.design.widget.CoordinatorLayout   
xmlns:android="http://schemas.android.com/apk/res/android"  
xmlns:app="http://schemas.android.com/apk/res-auto"  
xmlns:tools="http://schemas.android.com/tools"  
android:layout_width="match_parent"  
android:id="@+id/parentLayout"  
android:layout_height="match_parent"  
android:fitsSystemWindows="true"  
tools:context=".MainActivity">  

<android.support.design.widget.AppBarLayout  
 android:layout_width="match_parent"  
 android:layout_height="wrap_content"  
 android:theme="@style/AppTheme.AppBarOverlay">  

 <android.support.v7.widget.Toolbar  
   android:id="@+id/toolbar"  
   android:layout_width="match_parent"  
   android:layout_height="?attr/actionBarSize"  
   android:background="?attr/colorPrimary"  
   app:popupTheme="@style/AppTheme.PopupOverlay" />  

 </android.support.design.widget.AppBarLayout>  
 <ListView app:layout_behavior="@string/appbar_scrolling_view_behavior"  
    android:id="@+id/listView"  
    android:layout_width="fill_parent"  
    android:layout_height="match_parent" />  

<android.support.design.widget.FloatingActionButton  
 android:id="@+id/fab"  
 android:layout_width="wrap_content"  
 android:layout_height="wrap_content"  
 android:layout_gravity="bottom|end"  
 android:layout_margin="@dimen/fab_margin"  
 android:src="@android:drawable/stat_sys_download" />  

</android.support.design.widget.CoordinatorLayout>

thank you.


Solution

  • Just move your below code from onClick() to onCreate() method:

     if (InternetConnection.checkConnection(getApplicationContext())) {  
       new GetDataTask().execute();  
     } else {  
       Snackbar.make(view, "Internet Connection Not Available", Snackbar.LENGTH_LONG).show();  
     }
    

    Uodate your MainActivity as below:

    public class MainActivity extends AppCompatActivity {
    
        private ListView listView;
        private ArrayList<MyDataModel> list;
        private MyArrayAdapter adapter;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
            setSupportActionBar(toolbar);
    
            /**
             * Array List for Binding Data from JSON to this List  
             */
            list = new ArrayList<>();
            /**
             * Binding that List to Adapter  
             */
            adapter = new MyArrayAdapter(this, list);
    
            /**
             * Getting List and Setting List Adapter  
             */
            listView = (ListView) findViewById(R.id.listView);
            listView.setAdapter(adapter);
            listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                    Snackbar.make(findViewById(R.id.parentLayout), list.get(position).getName() + " => " + list.get(position).getPhone(), Snackbar.LENGTH_LONG).show();
                }
            });
    
            /**
             * Just to know onClick and Printing Hello Toast in Center.  
             */
            Toast toast = Toast.makeText(getApplicationContext(), "Click on FloatingActionButton to Load JSON", Toast.LENGTH_LONG);  
                    toast.setGravity(Gravity.CENTER, 0, 0);
            toast.show();
    
            /**
             * Checking Internet Connection  
             */
            if (InternetConnection.checkConnection(getApplicationContext())) {
                new GetDataTask().execute();
            } else {
                Snackbar.make(view, "Internet Connection Not Available", Snackbar.LENGTH_LONG).show();
            }
    
            FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
            fab.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(@NonNull View view) {
    
                    // Do something...
                }
            });
        }
    
        /**
         * Creating Get Data Task for Getting Data From Web  
         */
        class GetDataTask extends AsyncTask<Void, Void, Void> {
    
            ProgressDialog dialog;
    
            @Override
            protected void onPostExecute(Void aVoid) {
                super.onPostExecute(aVoid);
                dialog.dismiss();
                /**
                 * Checking if List size if more than zero then  
                 * Update ListView  
                 */
                if(list.size() > 0) {
                    adapter.notifyDataSetChanged();
                } else {
                    Snackbar.make(findViewById(R.id.parentLayout), "No Data Found", Snackbar.LENGTH_LONG).show();
                }
            }
        }
    }