2016-11-24 10 views
1

私はスピナーに5つの項目があります。スピナーの最初の項目を非表示にしたいだけです。問題は、最初のitem_idを使用してapiがヒットする項目を選択せず​​に、最初の位置(0)のスピナーにblank feildを追加したばかりです。それは正常に動作しています。問題は最初の空白の項目の可視性です。その項目を非表示にしたいです。次のように私のコードは次のとおりです。スピナーの最初の項目を非表示にする

  JSONArray staff_array; 
      List<String> owner_list =new ArrayList<String>(); 
      final List<String> owner_id_list = new ArrayList<String>(); 

      try 
      {  
      isEnabled(0); //To disable First Item 

      owner_list.add(""); 

      owner_id_list.add(""); 

      for (int i = 0; i <staff_array.length(); i++) 
      {   
      JSONObject staff_obj=staff_array.getJSONObject(i); 
      String fname=staff_obj.getString(FIRST_NAME); 
      String lname=staff_obj.getString(LAST_NAME); 
      owner_id_list.add(staff_obj.getString(STAFF_ID)); 

      String staff_name=fname.concat(" "+lname);      
      owner_list.add(staff_name);  
      } 
      owner_list.add((String) getText(R.string.unassigned)); 
      owner_id_list.add("0"); 




      } catch (JSONException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
      } 

      ArrayAdapter<String> owner_Adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item,owner_list); 
      owner_Adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
      spin.setAdapter(owner_Adapter); 
      int owner_Position = owner_Adapter.getPosition(tv_owner.getText().toString()); 

      spin.setSelection(owner_Position); 


      spin.performClick(); 

      spin.setOnItemSelectedListener(new OnItemSelectedListener() { 
      @Override 
      public void onItemSelected(AdapterView<?> parent, View view, 
      int pos, long id) { 
      // TODO Auto-generated method stub 
      String selected_owner = parent.getItemAtPosition(pos).toString(); 
      String staff_id=owner_id_list.get(pos); 
      //************************* 
      Toast.makeText(getApplicationContext(),selected_owner+" "+staff_id , Toast.LENGTH_SHORT).show(); 
      Log.d("selected owner : ",selected_owner); 
      Log.d("staff id is blank : ",staff_id); 


      if(staff_id!="") 
      { 
      String owner_filter="&vis_ticket_id="+Ticket_id+"&vis_action=staff&vis_update_id="+staff_id; 
      UPDATE_OWNER_URL=op.getUrl(getApplicationContext(),"ticket","update_properties",owner_filter); 
      JSONArray owner_array ; 
      } 

      //************************* 


      try 
      { 
      owner_array = new editProperties(UPDATE_OWNER_URL).execute().get();  

      String result=owner_array.toString(); 

      if(result.equals("[\"success\"]")) 
      { 
      new ticketDetails().execute(); // parse other ticket details using AsyncTask 
      //tv_owner.setText(selected_owner); 
      } 
      else {Operation.showToast(getApplicationContext(), R.string.error);}           

      } catch (InterruptedException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
      } catch (ExecutionException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
      } 

      } 

      @Override 
      public void onNothingSelected(AdapterView<?> arg0) { 
      // TODO Auto-generated method stub 

      } 

      });     

答えて

1

はこれを試してみてください、上書きgetCount方法は1でスピナー項目の数を減らすことができますしかし、唯一のこのメソッドをオーバーライドすることはスピナーにのみ最後の項目を非表示になります。したがって、getDropDownViewメソッドをオーバーライドして、すべてのアイテムを1つだけオフセット(プッシュアップ)します。最終結果は、アイテム0(最初のアイテム)のみが非表示になります。

ArrayAdapter adapter = new ArrayAdapter<String>(this, R.layout.your_spinner_layout, spinnerArray) { 

     public View getDropDownView(int position, View convertView, ViewGroup parent) { 
      return super.getDropDownView(position + 1, convertView, parent); 
     } 

     public int getCount() { 
      return spinnerArray.size - 1; 
     } 
    }; 
+0

ベンジャミン –

関連する問題