2016-09-07 38 views
0

我想加載基於spinner1項目選擇的微調2數據。我的spinner1加載沒有任何問題。我在spinner1中有兩個類別。在選擇spinner1上的任何值之前,我的spinner2會加載第二個類別值。編輯: 現在我明白了一件事。我有spinner1(類別)中的2個值。當沒有在spinner1中選擇任何內容時,spinner2將加載item2的值。如果我選擇了spinner1中的item1,它會正確加載。如果我在spinner1中選擇item2,則不會在spinner2中填充任何內容。由於我的提示,我認爲有一些問題。微調2數據沒有正確填充

最小spinner2部分MainActivity

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

          parent.getItemAtPosition(position).toString(); 

          getSpinner2(id); 
} 

     private void getSpinner2(Long id) { 

     MyRestClient.getForSpinner2(MainActivity.this, "MyRestService/product/"+id, 
      headers.toArray(new Header[headers.size()]), null, new JsonHttpResponseHandler() { 

     @Override 
     public void onSuccess(int statusCode, Header[] headers, JSONArray response) { 

     ArrayList<String> spinnerArray2 = new ArrayList<String>(); 
     final SpinnerAdapter2 spinnerAdapter2 = new SpinnerAdapter2(MainActivity.this, spinnerArray2); 

      for (int i = 0; i < response.length(); i++) { 
      try { 
          JSONObject c = response.getJSONObject(i); 
          String productArray = c.getString("product"); 
          spinnerAdapter2.add(productArray); 
          } 
          catch (JSONException e) { 
           e.printStackTrace(); 
          } 
         } 

     spinnerAdapter2.add("Select One"); 
     spinner2.setAdapter(spinnerAdapter2); 
     spinner2.setSelection(spinnerAdapter2.getCount()); 
     spinnerAdapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

    } 

和我有這顯示在spinneradapter2類提示

@Override 
    public int getCount() { 
     int count = super.getCount(); 
     return count > 0 ? count - 1 : count; 
    } 

. 
. 
public View getView(int position, View convertView, ViewGroup parent) { 
. 
. 
if (position == getCount()) { 

     viewHolder.product.setText(""); 
     viewHolder.product.setHint(products); 
    } else { 
    viewHolder.product.setText(products); 
    } 
    } 
+0

把你的屏幕截圖,你想要的東西其實 –

+0

份額上itemselected –

+0

在那裏你調用此方法爲第一微調的代碼? id){ – Steve

回答

0

請嘗試spinnerAdapter2.notifyDataSetChanged();添加各種元素,您的適配器後。也許它會有所幫助。我想你應該把這些項目添加到spinnerArray2,然後使用這個對象創建適配器。

+0

它沒有幫助。其第二項加載第二類 – user3785322

+0

@ matejko219下次不要把這個(建議)加入回答,將它添加到評論中。 – DevMike

+0

@DevMike當我寫這個答案我沒有+50的聲望,所以我不能評論。 – matejko219

0

編輯:

spinner2.setOnItemSelectedListener(MainActivity.this); spinner1 setOnItemSelectedListner內。

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

    parent.getItemAtPosition(position).toString(); 

    spinner2.setOnItemSelectedListener(MainActivity.this); 

    Log.e("Position", ""+position); 

if(position > 0){ 

getSpinner2(position); 

} else { 

Toast.makeText(getApplicationContext(), "Spinner oth postion is selected", Toast.LENGTH_SHORT).show(); 

}  
} 
+0

我無法添加此方法。它表示該方法不適用於Mainactivity參數。我現在意識到的一件事。我有spinner1(類別)中的2個值。當沒有在spinner1中選擇任何內容時,spinner2將加載category2的值。如果我選擇了spinner1中的item1,它會正確加載。如果我在spinner1中選擇item2,則不會在spinner2中填充任何內容。由於我的提示,我認爲有一些問題。請檢查一下。 – user3785322

+0

你在嗎?我可以進來討論嗎? – user3785322

+0

@ user3785322是的確定 – Steve

0

你需要知道onitemselected將被稱爲第一次,而無需用戶操作,並因爲要添加一個提示你應該檢查該位置是大於0這是提示位置如果再沒有暗示跳過檢查零位

因此新的選擇會像

spinner1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
        @Override 
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
         if(position>0){ 
         parent.getItemAtPosition(position).toString(); 
         getSpinner2(position); 
         } 
        } 

spinnerAdapter2.add("Select One"); 

調用此getSpinner2(很久以前,添加其他值的適配器,以確保它是在第一位置

+0

是的,我正在添加spinnerAdapter2.add(「Select One」);首先。你能來討論嗎? – user3785322

+0

當然我不知道如何 –

+0

我也不知道 – user3785322