2014年8月15日 星期五

Singleton in Android

https://gist.github.com/Akayh/5566992

    public static TicketTool getInstance(){  //新增一個public method getInstance()判斷有沒有new過
         if(ticketTool == null){
             ticketTool = new TicketTool();
         }
         return ticketTool;
       
    }

用法:

TicketTool ticketTool= TicketTool.getInstance();

變數設為PUBLIC 其他都是private

在CLASS外面存取CLASS中的變數要用TicketTool.getInstance().ticket_idArrayList



package com.ewallet.citygo.model;

import java.util.ArrayList;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import android.content.Context;
import android.util.Log;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;

import com.android.volley.Request.Method;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.VolleyLog;
import com.android.volley.toolbox.StringRequest;
import com.ewallet.citygo.CGApplication;


public class TicketTool {

    public String getStrResponse() {
        return getInstance().strResponse;
    }


    public void setStrResponse(String strResponse) {
        getInstance().strResponse = strResponse;
    }


    public static ArrayList<String> getTicket_TK_nameArrayList() {
        return getInstance().ticket_TK_nameArrayList;
    }


    public static void setTicket_TK_nameArrayList(
            ArrayList<String> ticket_TK_nameArrayList) {
        getInstance().ticket_TK_nameArrayList = ticket_TK_nameArrayList;
    }


    public static ArrayList<Integer> getTicket_idArrayList() {
        return getInstance().ticket_idArrayList;
    }


    public static void setTicket_idArrayList(ArrayList<Integer> ticket_idArrayList) {
        getInstance().ticket_idArrayList = ticket_idArrayList;
    }


    public static ArrayList<SaleType> getSaleTypeArrayList() {
        return getInstance().SaleTypeArrayList;
    }


    public static void setSaleTypeArrayList(ArrayList<SaleType> saleTypeArrayList) {
        getInstance().SaleTypeArrayList = saleTypeArrayList;
    }


    public static SaleType getTicketToolsaleType() {
        return getInstance().TicketToolsaleType;
    }


    public static void setTicketToolsaleType(SaleType ticketToolsaleType) {
        getInstance().TicketToolsaleType = ticketToolsaleType;
    }


    public static Sale getTicketToolSale() {
        return getInstance().TicketToolSale;
    }


    public static void setTicketToolSale(Sale ticketToolSale) {
        getInstance().TicketToolSale = ticketToolSale;
    }

    final private static String  url="http://106.187.38.21:8080/struts2ex/";
    public  String strResponse;
    public   ArrayList<String> ticket_TK_nameArrayList;
    public   ArrayList<Integer> ticket_idArrayList;
      public   ArrayList<SaleType> SaleTypeArrayList;
      public   SaleType TicketToolsaleType;
      public   Sale TicketToolSale;


    private static TicketTool ticketTool = null;
    
    public static TicketTool getInstance(){  //新增一個public method getInstance()判斷有沒有new過
         if(ticketTool == null){
             ticketTool = new TicketTool();
             getInstance().ticket_TK_nameArrayList= new ArrayList<String> ();
             getInstance().ticket_idArrayList= new ArrayList<Integer>();
             getInstance().SaleTypeArrayList=new ArrayList<SaleType>();
             getInstance(). TicketToolsaleType=new SaleType();
             getInstance().TicketToolSale =new Sale();
         }
         return ticketTool;
        
    }


    //目前不使用
    public String getTicket(){
        //從http://106.187.38.21/funad/funAD/phpMyAdmin/
        //獲得傳回的JSONARRAY
      
        StringRequest strReq = new StringRequest(Method.POST,
                url, new Response.Listener<String>() {

                    @Override
                    public void onResponse(String response) {
                        Log.d("TAG Ticket", response.toString());
                        ticketTool.strResponse=response;
                        try {
                            JSONArray j = new JSONArray(response);
                            for(int i =0;i<j.length();i++){
                                //ticket.TK_nameArrayList.add(j.getJSONObject(i).getString("TK_name"));
                            }
                        } catch (JSONException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                      
                    }
                }, new Response.ErrorListener() {

                    @Override
                    public void onErrorResponse(VolleyError error) {
                        VolleyLog.d("TAG Ticket", "Error: " + error.getMessage());
                    }
                });

        CGApplication.getInstance().addToRequestQueue(strReq, "getTicket");
        return ticketTool.strResponse;
      
    }
    //目前不使用
    public void getSaleType(final int id){
        StringRequest strReq = new StringRequest(Method.POST,
                url+"querySaleType", new Response.Listener<String>() {

                    @Override
                    public void onResponse(String response) {
                        //Log.d("TAG TicketTool getSaleType", response.toString());
                        strResponse=response;
                        try {
                            JSONArray j = new JSONArray(response);
                            for(int i =0;i<j.length();i++){
                                if(j.getJSONObject(i).getInt("saleId")==id){
                                    SaleType saleType= new SaleType();
                                    TicketTool.getInstance().TicketToolsaleType.setId(j.getJSONObject(i).getInt("id"));
                                    saleType.setSaleId(j.getJSONObject(i).getInt("saleId"));
                                    saleType.setPrice(j.getJSONObject(i).getInt("price"));
                                    //Log.d("QRShopConsumeFragment getSaleType","price:"+saleType.getPrice());
                                    saleType.setStocks(j.getJSONObject(i).getInt("stocks"));
                                    saleType.setQuantitySold(j.getJSONObject(i).getInt("quantitySold"));
                                    saleType.setBeginningDate(j.getJSONObject(i).getString("beginningDate"));
                                    saleType.setClosingDate(j.getJSONObject(i).getString("closingDate"));
                                    saleType.setUpdate_Date(j.getJSONObject(i).getString("update_Date"));
                                    TicketToolsaleType=saleType;
                                  
                                }else{
                                  
                                }
                              
                                //ticketTool.SaleTypeArrayList.add(saleType);
                              
                            }
                        } catch (JSONException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                      
                    }
                }, new Response.ErrorListener() {

                    @Override
                    public void onErrorResponse(VolleyError error) {
                        VolleyLog.d("TAG Ticket", "Error: " + error.getMessage());
                    }
                });

        CGApplication.getInstance().addToRequestQueue(strReq, "getSaleType");
    }
    public void getTK_name(final Context c,final ListView listView){
      
        //從http://106.187.38.21/funad/funAD/phpMyAdmin/
        //獲得傳回的JSONARRAY
        StringRequest strReq = new StringRequest(Method.POST,
                url+"getTK_name", new Response.Listener<String>() {

                    @Override
                    public void onResponse(String response) {
                        Log.d("TAG Ticket", response.toString());
                        ticketTool.strResponse=response;
                        try {
                            JSONArray j = new JSONArray(response);
                            for(int i =0;i<j.length();i++){
                              
                                getInstance().ticket_TK_nameArrayList.add(j.getJSONObject(i).getString("TK_name"));
                                getInstance().ticket_idArrayList.add(j.getJSONObject(i).getInt("id"));
                            }
                            listView.setAdapter(new ArrayAdapter<String>(c, android.R.layout.simple_list_item_1, ticketTool.ticket_TK_nameArrayList));
                          
                  
                          
                        } catch (JSONException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                      
                    }
                }, new Response.ErrorListener() {

                    @Override
                    public void onErrorResponse(VolleyError error) {
                        VolleyLog.d("TAG Ticket", "Error: " + error.getMessage());
                    }
                });

        CGApplication.getInstance().addToRequestQueue(strReq, "getTK_name");
  
      
    }

  
    public  void setPrice(final int id,final TextView t) {
        StringRequest strReq = new StringRequest(Method.POST,
                url+"querySaleType", new Response.Listener<String>() {

                    @Override
                    public void onResponse(String response) {
                        //Log.d("TAG TicketTool getSaleType", response.toString());
                        ticketTool.strResponse=response;
                        try {
                            JSONArray j = new JSONArray(response);
                            for(int i =0;i<j.length();i++){
                                if(j.getJSONObject(i).getInt("saleId")==id){
                                    //Log.d("TicketTool setPrice","price:"+j.getJSONObject(i).getInt("price"));
                                    t.setText(String.valueOf(j.getJSONObject(i).getInt("price")));
                                }else{
                                  
                                }
                            }
                        } catch (JSONException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                      
                    }
                }, new Response.ErrorListener() {

                    @Override
                    public void onErrorResponse(VolleyError error) {
                        VolleyLog.d("TAG Ticket", "Error: " + error.getMessage());
                    }
                });

        CGApplication.getInstance().addToRequestQueue(strReq, "setPrice");
      
    }
    public void setTK_description(final int id,final TextView t) {
        StringRequest strReq = new StringRequest(Method.POST,
                url+"querySale", new Response.Listener<String>() {

                    @Override
                    public void onResponse(String response) {
                        //Log.d("TAG TicketTool getSaleType", response.toString());
                        ticketTool.strResponse=response;
                        try {
                            JSONArray j = new JSONArray(response);
                            for(int i =0;i<j.length();i++){
                                if(j.getJSONObject(i).getInt("id")==id){
                                    t.setText(j.getJSONObject(i).getString("TK_description"));
                                }else{
                                  
                                }
                              
                                //ticketTool.SaleTypeArrayList.add(saleType);
                              
                            }
                        } catch (JSONException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                      
                    }
                }, new Response.ErrorListener() {

                    @Override
                    public void onErrorResponse(VolleyError error) {
                        VolleyLog.d("TAG Ticket", "Error: " + error.getMessage());
                    }
                });

        CGApplication.getInstance().addToRequestQueue(strReq, "setTK_description");
      
    }
  
  
}

沒有留言:

張貼留言