声明arraylist并创建arraylist对象时的最佳方法是什么?

时间:2019-02-17 10:45:18

标签: java android arraylist

我应该将arraylist声明为全局数组,然后在oncreate中对其进行初始化:

ArrayList<CartModelClass> workorder;

并在 txtv_create_now onclicklistener 方法中像这样使用:

UtilItems.getCartArrayList();

OR

txtv_create_now onclicklistenert 方法中声明数组列表:

ArrayList<CartModelClass> workorder;   
workorder=UtilItems.getCartArrayList();

我的问题是:

  • 如果我使用第二个对象,是否会一次又一次创建对象 会占用更多内存吗? T
  • 局部变量的范围在方法内,因此对象是 方法完成时销毁,所以arraylist对象何时 如果将它们创建为局部变量,则会被破坏。

我已经宣布 HashMap<String, String> params = new HashMap<>();两次。

这是一种好方法还是应该在活动中将它们声明为全局

HashMap<String, String> params = new HashMap<>();

,然后在需要的地方像 onclicklistener 中一​​样使用

public class CreateVisitReportActivity extends AppCompatActivity {

 TextView txtv_cancel, txtv_create_now;
 EditText c_name, c_mobile, branch_Name, c_address, branch_Region;
 SharedPrefLogin sharedPrefCart;
 ArrayList < CartModelClass > workorder;

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

  sharedPrefCart = new SharedPrefLogin(getApplicationContext());
  workorder = new ArrayList < > ();
  txtv_cancel = findViewById(R.id.btn_CANCEL);
  txtv_create_now = findViewById(R.id.btn_CREATE);

  txtv_cancel.setOnClickListener(new View.OnClickListener() {
   @Override
   public void onClick(View v) {
    CreateVisitReportActivity.this.finish();
   }
  });

  txtv_create_now.setOnClickListener(new View.OnClickListener() {
   @Override
   public void onClick(View v) {

    workorder = UtilItems.getCartArrayList();

    /*String productid= String.valueOf(workorder.get(0).getP_id());
    String productname=workorder.get(0).getP_name();
    String createdby= sharedPrefCart.getUserType();
    String status= sharedPrefCart.getLoginStatus();
    String updatedby= sharedPrefCart.getUserType();
    String quantity=workorder.get(0).getP_quantity();*/

    ArrayList < String > arrayList = new ArrayList < > ();
    for (int i = 0; i <= workorder.size() - 1; i++) {

     HashMap < String, String > params = new HashMap < > ();
     params.put("productid", String.valueOf(workorder.get(i).getP_id()));
     params.put("quantity", workorder.get(i).getP_quantity());
     arrayList.add(String.valueOf(params));
    }
    Log.d("qweewraddjideed", String.valueOf(arrayList));    

    HashMap < String, String > params = new HashMap < > ();
    params.put("createdby", sharedPrefCart.getUserType());
    params.put("items", String.valueOf(arrayList));
    Log.d("adsd", String.valueOf(params));

    final ProgressDialog pDialog = new ProgressDialog(CreateVisitReportActivity.this);
    pDialog.setMessage("Please Wait ...");
    pDialog.show();
    JsonObjectRequest request_json = new JsonObjectRequest(URLs.workOrderURL, new JSONObject(params),
     new Response.Listener < JSONObject > () {

      @Override
      public void onResponse(JSONObject response) {
       //Process os success response
       Log.d("worrr", String.valueOf(response));

       pDialog.hide();
       Toast.makeText(getApplicationContext(), "Order Placed", Toast.LENGTH_LONG).show();    
      }
     }, new Response.ErrorListener() {
      @Override
      public void onErrorResponse(VolleyError error) {
       pDialog.hide();

       VolleyLog.e("Error: ", error.getMessage());
      }  
     });        VolleySingleton.getInstance(getApplicationContext()).addToRequestQueue(request_json);    
   }
  });   
 }    
}

0 个答案:

没有答案