在主屏幕中显示 JSON 数据

Showing JSON data in main screen

json 数据仅在单击浮动操作按钮时出现,我想直接在主屏幕上显示我的 json 数据而不是通过浮动操作按钮,该怎么做?

这是我的代码

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>

谢谢。

只需将下面的代码从 onClick() 移动到 onCreate() 方法:

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

修改你的 MainActivity 如下:

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();
            }
        }
    }
}