【问题标题】:Showing JSON data in main screen在主屏幕中显示 JSON 数据
【发布时间】:2017-11-12 19:43:50
【问题描述】:

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>

谢谢。

【问题讨论】:

    标签: android json listview floating-action-button


    【解决方案1】:

    只需将您的以下代码从 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();
                }
            }
        }
    }
    

    【讨论】:

    • 你试过我的解决方案了吗?你想要什么样的例子?
    • 感谢您接受我的回答。如果我的回答看起来有用,我希望你能投赞成票。谢谢你:)
    猜你喜欢
    • 1970-01-01
    • 2018-09-18
    • 2016-05-05
    • 1970-01-01
    • 1970-01-01
    • 2013-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多