2016-11-11 43 views
1

我正在爲我的客戶端創建一個android應用程序,在這個應用程序中用戶必須填寫表單。我爲此使用JSON Web服務,並且知道如何發送和接收數據。問題是,雖然我正在獲取必要的數據來填充表單並填充微調(我的表單中有多個微調),但數據並未填充到微調,但是我成功從Web服務獲取數據。請仔細閱讀我的代碼,並善意幫助我,因爲我沒有太多時間。提前致謝。微調不填充從webservice接收的數據

public class AgentActivity extends AppCompatActivity { 

    Spinner spnr_commodity; 
    public Spinner spnr_ImpExp; 
    public Spinner spnr_unit; 
    public Spinner spnr_terminal; 
    public Spinner spnr_eta; 
    public Spinner spnr_lastport; 

    private String TAG = "Agent"; 
    private TextView txtName_L; 
    private TextView txtName; 
    private TextView txtloa; 
    private TextView txtbeam; 
    private TextView txtgrt; 
    private TextView txtnrt; 
    private TextView txtpcno; 


    private ImageButton btnSearch; 
    private SearchView shipSearch; 
    private String strShipName = "Select Ship Name"; 
    private String str_qty; 
    private AlphaAnimation buttonClick = new AlphaAnimation(1F, 0.8F); 
    /*private AnimationSet edtQty = new AnimationSet();*/ 
    EditText a_date; 
    EditText d_date; 

    EditText a_time; 
    EditText qty; 
    DatePickerDialog datePickerDialog1; 
    DatePickerDialog datePickerDialog2; 
    TimePickerDialog timePickerDialog; 
    ProgressDialog progressDialog; 
    Toolbar mToolbar; 

    public String [] arr_impexp= {"Type","Import","Export"}; 
    public String[] arr_lastport={"Select ","KPT","Singapore","China","Dubai","Indonesia","Korea"}; 

    public String[] arr_shipname ; 
    public String[] arr_terminal; 
    public String [] arr_commodity ; 

    ArrayAdapter<String> unitAdapter; 
    ArrayAdapter<String> terminalAdapter; 
    ArrayAdapter<String> commodityAdapter; 
    ArrayAdapter<String> ImpExpAdapter; 
    ArrayAdapter<String> lastportAdapter; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     SharedPreferences preference = getApplication().getSharedPreferences("MyPrefs", Context.MODE_PRIVATE); 
     setTitle(preference.getString("nameKey", null)); 


     setContentView(R.layout.agent_activity); 





     Toolbar mToolbar = (Toolbar) findViewById(R.id.toolbar); 
     mToolbar.setNavigationIcon(R.drawable.ic_arrow_back_white_24dp); 
     setSupportActionBar(mToolbar); 
     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
     mToolbar.setNavigationOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       onBackPressed(); 
      } 
     }); 
     mToolbar.setTitleTextColor(Color.WHITE); 

     mToolbar.setNavigationOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       onBackPressed(); 
      } 
     }); 


     txtName_L = (TextView) findViewById(R.id.l_shipName); 
     txtName = (TextView) findViewById(R.id.n_ship); 
     txtloa = (TextView) findViewById(R.id.loa); 
     txtbeam = (TextView) findViewById(R.id.beam); 
     txtgrt = (TextView) findViewById(R.id.grt); 
     txtnrt = (TextView) findViewById(R.id.nrt); 
     txtpcno = (TextView) findViewById(R.id.pc); 

     btnSearch = (ImageButton) findViewById(R.id.btnsearch); 
     qty = (EditText) findViewById(R.id.c_qty); 
     a_date = (EditText) findViewById(R.id.a_date); 
     d_date = (EditText) findViewById(R.id.d_date); 
     a_time = (EditText) findViewById(R.id.a_time); 
     spnr_ImpExp = (Spinner) findViewById(R.id.spnr_ImpExp); 
     spnr_ImpExp.setPrompt("Type"); 
     spnr_unit = (Spinner) findViewById(R.id.spnr_unit); 

     spnr_terminal = (Spinner) findViewById(R.id.spnr_terminal); 

     spnr_eta = (Spinner) findViewById(R.id.spnr_eta); 

     spnr_lastport = (Spinner) findViewById(R.id.spnr_lastport); 


//download data from php 
     new DownloadInitialInformation().execute("http://192.168.1.131/pqamssql/agent.php"); 



     txtName_L.setText(strShipName); 
     List<String> list = new ArrayList<>(); 
     list.add("Select Unit "); 
     list.add("TUE"); 
     list.add("M.Ton"); 
     list.add("C.Met"); 
     list.add("Units"); 
     unitAdapter = new ArrayAdapter<String>(this,R.layout.spinner_item, list); 
     unitAdapter.setDropDownViewResource(R.layout.spinner_dropdown_item); 
     spnr_unit.setAdapter(unitAdapter); 

     ImpExpAdapter = new ArrayAdapter<String>(this, R.layout.spinner_item, arr_impexp); 
     ImpExpAdapter.setDropDownViewResource(R.layout.spinner_dropdown_item); 
     spnr_ImpExp.setAdapter(ImpExpAdapter); 

     txtName_L.setText(strShipName); 

     // str_qty = qty.getText().toString(); 
     // Toast.makeText(this,"QTY: "+str_qty,Toast.LENGTH_SHORT).show(); 


     txtName.setText("SHIP NAME | " + Constants.getShipName()); 


     if (!Constants.getShipName().equals(" ")) { 

      Log.i(TAG, "Ship Name : " + Constants.getShipName()); 

      new ShipDetail().execute("http://192.168.1.131/pqamssql/initial.php?shipname=" + Constants.getShipName()); 

     } 

     spnr_unit.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
        @Override 
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 

         if (position != 0) { 
          Toast.makeText(parent.getContext(), 
            "Position: " + position + " OnItemSelectedListener : " + parent.getItemAtPosition(position).toString(), 
            Toast.LENGTH_SHORT).show(); 
          String str_craftType = parent.getItemAtPosition(position).toString(); 
          //craft.setText(str_craftType); 
         } 


        } 

        @Override 
        public void onNothingSelected(AdapterView<?> parent) { 

        } 
       }); 

     btnSearch.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       // v.startAnimation(buttonClick); 
       Intent i = new Intent(AgentActivity.this, AgentListView.class); 
       startActivity(i); 

      } 
     }); 

     // initiate the date picker and a button 

     // perform click event on edit text 
     a_date.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       // calender class's instance and get current date , month and year from calender 
       final Calendar c = Calendar.getInstance(); 
       int mYear = c.get(Calendar.YEAR); // current year 
       int mMonth = c.get(Calendar.MONTH); // current month 
       int mDay = c.get(Calendar.DAY_OF_MONTH); // current day 
       // date picker dialog 
       datePickerDialog1 = new DatePickerDialog(AgentActivity.this, 
         new DatePickerDialog.OnDateSetListener() { 

          @Override 
          public void onDateSet(DatePicker view, int year, 
                int monthOfYear, int dayOfMonth) { 
           // set day of month , month and year value in the edit text 
           a_date.setText(dayOfMonth + "/" 
             + (monthOfYear + 1) + "/" + year); 

          } 
         }, mYear, mMonth, mDay); 
       datePickerDialog1.show(); 
      } 
     }); 



     d_date.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       // calender class's instance and get current date , month and year from calender 
       final Calendar c = Calendar.getInstance(); 
       int mYear = c.get(Calendar.YEAR); // current year 
       int mMonth = c.get(Calendar.MONTH); // current month 
       int mDay = c.get(Calendar.DAY_OF_MONTH); // current day 
       // date picker dialog 
       datePickerDialog2 = new DatePickerDialog(AgentActivity.this,R.style.agentTheme, 
         new DatePickerDialog.OnDateSetListener() { 

          @Override 
          public void onDateSet(DatePicker view, int year, 
                int monthOfYear, int dayOfMonth) { 
           // set day of month , month and year value in the edit text 
           d_date.setText(dayOfMonth + "/" 
             + (monthOfYear + 1) + "/" + year); 

          } 
         }, mYear, mMonth, mDay); 

       datePickerDialog2.show(); 
      } 
     }); 

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

       final Calendar c = Calendar.getInstance(); 
       // Get the current hour and minute 
       int hour = c.get(Calendar.HOUR_OF_DAY); 
       int mint = c.get(Calendar.MINUTE); 
       timePickerDialog = new TimePickerDialog(AgentActivity.this,R.style.AppTheme_Light_Dialog, new TimePickerDialog.OnTimeSetListener() { 
        @Override 
        public void onTimeSet(TimePicker view, int hourOfDay, int minute) { 
         a_time.setText(hourOfDay + ":" + minute); 
        } 
       }, hour, mint,true); 
       timePickerDialog.show(); 
      } 
     }); 


    } 



    class ShipDetail extends AsyncTask<String, String, String[]> { 

     HttpURLConnection connection = null; 
     BufferedReader reader = null; 

     @Override 
     protected String[] doInBackground(String... params) { 

      Log.i(TAG, "URL : " + params[0]); 
      String result1; 
      String result2; 
      String result3; 
      String result4; 
      String result5; 

      String[] resultArray = new String[5]; 

      try { 
       URL url = new URL(params[0]); 
       connection = (HttpURLConnection) url.openConnection(); 
       connection.connect(); 
       Log.i(TAG, "Connected"); 
       InputStream stream = connection.getInputStream(); 
       reader = new BufferedReader(new InputStreamReader(stream)); 
       Log.i(TAG, "Data Read"); 
       StringBuffer buffer = new StringBuffer(); 
       String line = ""; 
       while ((line = reader.readLine()) != null) { 

        buffer.append(line); 

       } 


       String json = buffer.toString(); 
       Log.i(TAG, "LINE ## : " + json); 
       if (json.equals("No Data Found")) { 

        resultArray[0] = "No Data Found"; 


       } else { 
        JSONObject shipdetailObject = new JSONObject(json); 
        JSONObject parentKey = shipdetailObject.getJSONObject("detail"); 


        result1 = parentKey.getString("loa"); 
        result2 = parentKey.getString("beam"); 
        result3 = parentKey.getString("grt"); 
        result4 = parentKey.getString("nrt"); 
        result5 = parentKey.getString("pcno"); 
        resultArray[0] = result1; 
        resultArray[1] = result2; 
        resultArray[2] = result3; 
        resultArray[3] = result4; 
        resultArray[4] = result5; 

        return resultArray; 
       } 
      } catch (MalformedURLException e) { 
       e.printStackTrace(); 
      } catch (JSONException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 


      return resultArray; 
     } 

     @Override 
     protected void onPostExecute(String[] s) { 


      super.onPostExecute(s); 

      if (s[0].equals("No Data Found")) { 
       Toast.makeText(AgentActivity.this, "" + s[0], Toast.LENGTH_SHORT).show(); 
      } else { 
       String str_loa = s[0]; 
       String str_beam = s[1]; 
       String str_nrt = s[2]; 
       String str_grt = s[3]; 
       String str_pcno = s[4]; 


       Log.i(TAG, "Extracted From JSON LOA: " + str_loa); 
       Log.i(TAG, "Extracted From JSON BEAM: " + str_beam); 
       Log.i(TAG, "Extracted From JSON GRT: " + str_grt); 
       Log.i(TAG, "Extracted From JSON NRT: " + str_nrt); 
       Log.i(TAG, "Extracted From JSON PCNO: " + str_pcno); 

       txtloa.setText("L.O.A |" + str_loa); 
       txtbeam.setText("G.R.T  |" + str_beam); 
       txtgrt.setText("N.R.T |" + str_grt); 
       txtnrt.setText("BEAM |" + str_nrt); 
       txtpcno.setText("P.C No. |" + str_pcno); 
      } 


     } 
    } 

    //downloading initial detail 
    class DownloadInitialInformation extends AsyncTask<String, String, String> { 

     HttpURLConnection connection = null; 
     BufferedReader reader = null; 

     @Override 
     protected void onPreExecute() { 

      super.onPreExecute(); 
      progressDialog = new ProgressDialog(AgentActivity.this, 
        R.style.AppTheme_Dark_Dialog); 
      // progressDialog.setIndeterminate(true); 
      progressDialog.setMessage("Downloading..."); 
      progressDialog.show(); 

     } 

     @Override 
     protected String doInBackground(String... params) { 

      Log.i(TAG, "URL : " + params[0]); 

//Boolean flag= new Boolean(false); 
      String flag = ""; 

      try { 
       URL url = new URL(params[0]); 
       connection = (HttpURLConnection) url.openConnection(); 
       connection.connect(); 
       Log.i(TAG, "Connected"); 
       InputStream stream = connection.getInputStream(); 
       reader = new BufferedReader(new InputStreamReader(stream)); 
       Log.i(TAG, "Data Read"); 
       StringBuffer buffer = new StringBuffer(); 
       String line = ""; 
       while ((line = reader.readLine()) != null) { 

        buffer.append(line); 

       } 


       String json = buffer.toString(); 
       Log.i(TAG, "LINE ## : " + json); 
       if (json.equals("No Data Found")) { 
flag="N"; 
       } 
       else{ 
        JSONObject parentObject = new JSONObject(json); 
        JSONArray parentShipArray = parentObject.getJSONArray("Ship"); 
        JSONArray parentTerminalArray = parentObject.getJSONArray("Terminals"); 
        JSONArray parentCommodityArray = parentObject.getJSONArray("Commodity"); 

        int v_len,t_len,c_len; 
        v_len = parentShipArray.length(); 
        t_len = parentTerminalArray.length(); 
        c_len = parentCommodityArray.length(); 
        arr_shipname = new String[v_len]; 
        arr_terminal = new String[t_len]; 
       arr_commodity = new String[c_len]; 


        Log.i(TAG, "Ship Length : " + v_len); 
        Log.i(TAG, "T Length : " + t_len); 
        Log.i(TAG, "C Length : " + c_len); 
        //getting ships 
        for (int i = 0; i < v_len; i++) { 
         JSONObject ship_json = parentShipArray.getJSONObject(i); 
         arr_shipname[i] = ship_json.getString("v"); 
         Log.i(TAG, "Ship name : " + arr_shipname[i]); 
         Log.i(TAG, "Vessel name : "+arr_shipname[2]); 

        } 


        //getting terminals 
        for (int i = 0; i < t_len; i++) { 
         JSONObject terminal_json = parentTerminalArray.getJSONObject(i); 
         arr_terminal[i] = terminal_json.getString("t"); 
         Log.i(TAG, "Terminal : " + arr_terminal[i]); 
        } 

        //getting commodity 

        for (int i = 0; i < c_len; i++) { 
         JSONObject commdty_json = parentCommodityArray.getJSONObject(i); 
        // arr_commodity.add(commdty_json.getString("c")); 
         arr_commodity[i] = commdty_json.getString("c"); 
         Log.i(TAG, "Commodity : " + arr_commodity[i]); 
        } 

        flag = "Y"; 


       } 
      } catch (MalformedURLException e) { 
       e.printStackTrace(); 
      } catch (JSONException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 


      return flag; 
     } 

     @Override 
     protected void onPostExecute(String downloadStat) { 


      super.onPostExecute(downloadStat); 
      Log.i(TAG, "download stat : " + downloadStat); 
      if (downloadStat.equals("Y")) { 
//set all textViews and spinner 

       // Log.i(TAG, "Commodity : " + arr_commodity[1]); 


       spnr_commodity = (Spinner) findViewById(R.id.spnr_commodity); 
       commodityAdapter = new ArrayAdapter<String>(AgentActivity.this, android.R.layout.simple_spinner_item,arr_commodity); 
       commodityAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
       //Log.i(TAG, "Commodity : " + arr_commodity); 
       spnr_commodity.setAdapter(commodityAdapter); 

       terminalAdapter = new ArrayAdapter<String>(AgentActivity.this, android.R.layout.simple_spinner_item, arr_terminal); 
       terminalAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
       spnr_terminal.setAdapter(terminalAdapter); 
       //Log.i(TAG, "Terminal : " + arr_terminal.toString()); 

       lastportAdapter = new ArrayAdapter<String>(AgentActivity.this,android. R.layout.simple_spinner_item, arr_lastport); 
       lastportAdapter.setDropDownViewResource(R.layout.spinner_dropdown_item); 
       spnr_lastport.setAdapter(lastportAdapter); 
       //Log.i(TAG, "Last Port : " + arr_lastport.toString()); 
      } else { 
       Toast.makeText(AgentActivity.this, "No Data Found", Toast.LENGTH_SHORT).show(); 
      } 

      progressDialog.dismiss(); 
     } 
    } 
} // End of AgentActivity 

*LogCat to Check populated array* 

11-14 09:44:18.267 19660-19660/com.portqasim.personal.testinglayout I/TERMINAL﹕ (QICT)-1.1 
11-14 09:44:18.267 19660-19660/com.portqasim.personal.testinglayout I/TERMINAL﹕ (QICT)-1.2 
11-14 09:44:18.267 19660-19660/com.portqasim.personal.testinglayout I/TERMINAL﹕ (QICT)-2.1 
11-14 09:44:18.267 19660-19660/com.portqasim.personal.testinglayout I/TERMINAL﹕ (QICT)-2.2 
11-14 09:44:18.268 19660-19660/com.portqasim.personal.testinglayout I/TERMINAL﹕ EVTL-13 
11-14 09:44:18.268 19660-19660/com.portqasim.personal.testinglayout I/TERMINAL﹕ FAP GT 
11-14 09:44:18.268 19660-19660/com.portqasim.personal.testinglayout I/TERMINAL﹕ FOTCO OIL TERMINAL 
11-14 09:44:18.268 19660-19660/com.portqasim.personal.testinglayout I/TERMINAL﹕ IOCB 
11-14 09:44:18.268 19660-19660/com.portqasim.personal.testinglayout I/TERMINAL﹕ LCT 
11-14 09:44:18.269 19660-19660/com.portqasim.personal.testinglayout I/TERMINAL﹕ MW-1 
11-14 09:44:18.269 19660-19660/com.portqasim.personal.testinglayout I/TERMINAL﹕ MW-2 
11-14 09:44:18.269 19660-19660/com.portqasim.personal.testinglayout I/TERMINAL﹕ MW-3 
11-14 09:44:18.269 19660-19660/com.portqasim.personal.testinglayout I/TERMINAL﹕ MW-4 
11-14 09:44:18.269 19660-19660/com.portqasim.personal.testinglayout I/TERMINAL﹕ SSGC/LPG 
+0

聲明你arr_commodity,arr_terminal,arr_lastport數組變量全球和嘗試 –

+0

沒關係,讓我來試試 –

+0

沒有運氣哥: ( 如果我犯了錯誤,你可以再次檢查我的代碼。這裏是鏈接 http://pastebin.com/9Q7p1d90 –

回答

0

通過對話只是改變了微調模式到下拉

以前

機器人成功地解決了這個問題:spinnerMode = 「對話框」

現在

機器人:spinnerMode =「dropdown」

以前的XML是在這裏

http://pastebin.com/2G9zt8ht

正確的XML是在這裏

http://pastebin.com/yQEbapkg

0

我無法在xml文件中看到您的微調器。但是我有類似的問題,並且在我在xml中的微調器中添加條目時被修復。我將所有適配器和微調項目都正確,但不會在未添加xml文件中的條目的情況下顯示在微調器中。

+0

你可以從這裏查看我的XML http://pastebin.com/2G9zt8ht –

+0

添加機器人:項=「@陣列/ whatever_your_content」在您的微調 –

+0

好嗎讓我試試 –

0

嘗試在獲取列表中的所有值後,將適配器設置爲微調器,在將適配器設置爲微調器之前,調試您的代碼並確保列表中有數據。

+0

所以我應該使用列表而不是數組? –

+0

我不是那個意思,只是檢查這些數組中的值。 – Manoj

+0

只需確保在將適配器設置爲微調器之前,數組不爲空 – Manoj