2012-08-08 4 views
0

나는 하나의 webservice에서 회 전자를 채울 필요가있는 응용 프로그램을 개발 중이며, 첫 번째 회 전자 항목을 선택한 후에 채우는 두 번째 회 전자도 있습니다. 초 (회 전자 B) 회 전자 A에 따라 달라집니다. 나는 A에 대한 목록을 얻었지만 b 회 전자에 문제가 있습니다. 내가 스피너의 항목 "A"가 여기 코드 ::이다 스피너 "B"의 모든 항목을로드를 선택하면회 전자 항목을 클릭하고 두 번째 회 전자 목록 항목의 asynctask를 호출하십시오.

내 기본적인 요구 사항은

package com.CaribPay; 

import android.app.Activity; 
import android.app.ProgressDialog; 
import android.content.Intent; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemClickListener; 
import android.widget.AdapterView.OnItemSelectedListener; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.Spinner; 
import android.widget.Toast; 

import com.Setting.CustomParser; 

public class Register2 extends Activity implements OnItemClickListener { 
    private Button BtnReg2Next; 
    private EditText EdtxReg2Streetadd1, 
        EdtxReg2Streetadd2, 
        EdtxReg2City, 
        EdtxReg2Zipcode; 

    private Spinner 
        SpnrReg2Contry, 
        SpnrReg2Agent, 
        SpnrReg2State, 
        SpnrReg2PrimaryCurr, 
        SpnrReg2SecondaryCurr; 

    private CustomParser cstParsr = new CustomParser(); 

    private String[] Regstrationstep1; 
    private String[] strCountry,strProvince; 
    private String[] Primarysecondarycur; 
    private int globPosition; 
    private String strSelecteccontry; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.register2); 
     GetDataFromLastPage(); 

     new FillSpinnerTask().execute(); 



    } 

     private class FillSpinnerTask extends AsyncTask<Void, Void, Void> { 
      private ProgressDialog dialog = new ProgressDialog(
        Register2.this); 

      @Override 
      protected void onPreExecute() { 
       this.dialog.setMessage(getString(R.string.MsgPleasewait)); 
       this.dialog.show(); 
       this.dialog.setCancelable(false); 
       // put your code which preload with processDialog 

      } 

      @Override 
      protected Void doInBackground(Void... arg0) { 
       // put your code here 
       strCountry = cstParsr.LoadCountriesForMobApp(getApplicationContext()); 

       return null; 
      } 

      @Override 
      protected void onPostExecute(final Void unused) { 
       if (this.dialog.isShowing()) { 
        try { 
         this.dialog.dismiss(); 
         this.dialog = null; 
        } catch (Exception e) { 
         e.printStackTrace(); 
        } 
        if(strCountry != null) 
        { 
         for(int i=0;i<strCountry.length;i++) 
         { 
          Log.i("TAG","strCountry"+strCountry[i]); 
         } 

        } 
        FillView(); 

       } 
      } 
     } 


    private void FillView() { 

     BtnReg2Next = (Button)findViewById(R.id.BtnReg2Next); 
     EdtxReg2Streetadd1 = (EditText)findViewById(R.id.EdtxReg2Streetadd1); 
     EdtxReg2Streetadd2= (EditText)findViewById(R.id.EdtxReg2Streetadd2); 
     EdtxReg2City = (EditText)findViewById(R.id.EdtxReg2City); 
     EdtxReg2Zipcode = (EditText)findViewById(R.id.EdtxReg2Zipcode); 

     SpnrReg2Contry = (Spinner)findViewById(R.id.SpnrReg2Contry); 
     SpnrReg2Agent = (Spinner)findViewById(R.id.SpnrReg2Agent); 
     SpnrReg2State = (Spinner)findViewById(R.id.SpnrReg2State); 
     SpnrReg2PrimaryCurr = (Spinner)findViewById(R.id.SpnrReg2PrimaryCurr); 
     SpnrReg2SecondaryCurr= (Spinner)findViewById(R.id.SpnrReg2SecondaryCurr); 


     if(strCountry != null) 
     { 
      ArrayAdapter languagelist = new ArrayAdapter(
       Register2.this, 
       android.R.layout.simple_spinner_item, 
       strCountry); 

      languagelist.setDropDownViewResource(
       android.R.layout.simple_spinner_dropdown_item); 
      SpnrReg2Contry.setAdapter(languagelist); 
     } 


     SpnrReg2Contry.setOnItemSelectedListener(new OnItemSelectedListener() 
      { 
       public void onItemSelected(AdapterView<?> parent, View view, 
         int position, long arg3) 
       { 

         strSelecteccontry = strCountry[position]; 
         new FillProvinceSpinnerTask().execute(); 

       } 

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

       } 


      }); 

     /*SpnrReg2State.setOnTouchListener(new OnTouchListener() { 

      @Override 
      public boolean onTouch(View v, MotionEvent event) { 
       if(strProvince == null) 
       { 
       new FillProvinceSpinnerTask().execute(); 
       } 
       return true; 
      } 
     });*/ 



     BtnReg2Next.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       if(EdtxReg2Streetadd1.getText().toString().equalsIgnoreCase("")| 
        EdtxReg2Streetadd2.getText().toString().equalsIgnoreCase("")| 
        EdtxReg2City.getText().toString().equalsIgnoreCase("")| 
        EdtxReg2Zipcode.getText().toString().equalsIgnoreCase("")) 
       { 
        Toast.makeText(getApplication(),getString(R.string.nullmessage),Toast.LENGTH_LONG).show(); 
       }else 
       { 
        Intent Registration2 = new Intent(Register2.this,Register3.class); 
        startActivity(Registration2); 
        finish(); 
       } 


      } 
     }); 
    } 

    private void GetDataFromLastPage() { 
     // TODO Auto-generated method stub 
     Intent intent = getIntent(); 

     Regstrationstep1 = new String[9]; 
     Regstrationstep1 = intent.getStringArrayExtra("Regstrationstep1"); 


    } 
    @Override 
    public void onItemClick(AdapterView<?> arg0, View arg1, int Pos, long arg3) { 
     // TODO Auto-generated method stub 
    } 

    private class FillProvinceSpinnerTask extends AsyncTask<Void, Void, Void> { 
     private ProgressDialog dialog = new ProgressDialog(
       Register2.this); 

     @Override 
     protected void onPreExecute() { 
      this.dialog.setMessage(getString(R.string.MsgPleasewait)); 
      this.dialog.show(); 
      this.dialog.setCancelable(false); 
      // put your code which preload with processDialog 

     } 

     @Override 
     protected Void doInBackground(Void... arg0) { 
      // put your code here 
      strProvince = cstParsr.LoadProvinceFromCountryForMobApp(getApplicationContext(),strSelecteccontry); 


      return null; 
     } 

     @Override 
     protected void onPostExecute(final Void unused) { 
      if (this.dialog.isShowing()) { 
       try { 
        this.dialog.dismiss(); 
        this.dialog = null; 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 

       if(strProvince != null) 
       { 


        Primarysecondarycur = strProvince[0].split("~"); 
        strProvince[0] = "Please Select a State"; 
       ArrayAdapter languagelist = new ArrayAdapter(
         Register2.this, 
         android.R.layout.simple_spinner_item, 
         strProvince); 

       languagelist.setDropDownViewResource(
        android.R.layout.simple_spinner_dropdown_item); 
       SpnrReg2State.setAdapter(languagelist); 


       } 
      } 
     } 
    } 


} 
+0

무엇이 문제입니까? logcat 오류? – cosmincalistru

+0

페이지가로드 될 때 스피너 "A"항목이로드되고 spinnerA [0] 인덱스 bydefault –

+0

을 사용하여 한 번에 스피너 b 항목을로드합니다. 기본 요구 사항은 스피너 "A"항목을로드 할 때입니다. Spinner "b"의 모든 항목 –

답변

1

OnItemSelectedListener에 문제가 있다는 것입니다입니다 선언에서 첫 번째 값을 선택합니다. 첫 번째 호출을 피하려면 다음과 같이하십시오.

int count = 0; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(...); 
     ... 
     spinner.setOnItemSelectedListener(new OnItemSelectedListener() { 
      @Override 
      public void onItemSelected(AdapterView<?> arg0, View arg1, 
        int arg2, long arg3) { 
       if(count>0) { 
        // do what you want on item selection 
       } else { 
        count++; 
       } 
      } 

      @Override 
      public void onNothingSelected(AdapterView<?> arg0) { 
      } 
     }); 
    } 
+0

에 전달 될 때 문제가 있다고 말씀 드렸습니다. 안녕하세요. ping을 허용하겠습니다. –

+0

코드를 확인하고 알려 드리겠습니다. –