2012-11-21 61 views
0

我試過幾種方法來做到這一點,我遵循這個 - >Android Spinner databind using array list答案,但我的對象有一個ArrayList裏面。 整個事情是一個ArrayList,其中Object自己擁有一個列表。ArrayList <Object>適配器Spinner

如何正確顯示此信息?這個班的另一個領域是我不想被選擇的東西,只是裏面的數組列表。類定義將讓一切都清楚:

public class Horario{ 
    private String fecha; 
    private ArrayList<String> hora; 

    public Horario(String _fecha, ArrayList<String> _hora){ 
     fecha=_fecha; 
     hora = _hora; 
    } 

    public Horario(){} 

    public void setFecha(String _fecha){ 
     fecha = _fecha; 
    } 
    public void setHora(ArrayList<String> _hora){ 
     hora=_hora; 
    } 

    public String getFecha(){ 
     return fecha; 
    } 
    public ArrayList<String> getHora(){ 
     return hora; 
    } 
} 

這是一個時間表一類,日期(出生日期)是我不想當選擇,小時(霍拉)是。我想這是一個包含類別(日期)和一組可點擊項目(小時)的下拉菜單。

Date1 
    hour 1 
    hour 2 
    hour 3 
Date2 
    hour 1 

如果這是難以/不可能那麼我想的剛剛上市的微調的每個選項的日期+小時。

Date1 - hour 1 
Date1 - hour 2 
Date1 - hour 3 .... 

我該如何做到這一點?我如何個性化一個適配器來達到這個目的?提前致謝!

+1

你基本上在尋找一個帶有分段適配器的'ListView'。這有很多教程。 – Luksprog

+0

@Luksprog:類似的東西,但以微調形式? – Pundia

+1

如果我沒有弄錯'Spinner'不支持不同的行類型,那麼分段適配器就不適用。但是,您可以使用第二個選項,將日期放在每個行中,並只使用一種行類型(所有行都可選)。 – Luksprog

回答

0

編輯:

我很抱歉,我想我明白你腦子裏想什麼了。我想你想要的是爲getDropDown視圖中的所有東西。我沒有完全測試過這個,但是你可以嘗試使用不同佈局的DropDownView,具體取決於你想如何爲它指定一個標記。踢球者是這個自定義佈局有一個選擇器xml,顯示沒有區別。

public class HorarioArrayAdapter extends ArrayAdapter { 

    private Horario horario; 

    public HorarioArrayAdapter(Context context, int textViewResourceId, Horario horario) { 
     super(context, textViewResourceId); 
     this.horario = horario; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     // TODO whatever you had in mind 
     return super.getView(position, convertView, parent); 
    } 


    @Override 
    public View getDropDownView(int position, View convertView, ViewGroup parent) { 
     View v; 
     if (// marker at this position says something) { 
      LayoutInflater viewInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      v = viewInflater.inflate(R.layout.custom_spinner_row, parent, false); 

      TextView text = (TextView) v.findViewById(R.id.txt_date); 
      text.setText(horario.getHora().get(position));   
     } else { 
      View v = super.getDropDownView(position, convertView, parent); 
      TextView text = (TextView) v.findViewById(android.R.id.text1); 
      text.setText(horario.getHora().get(position));    
     } 
     return v;  
    } 

} 

摩擦雖然會使紡紗工做任何事情,如果這些職位被點擊,因爲在不甚密切。您可能需要製作一個自定義微調器,以便使用int position數組來告訴它何時關閉或不關閉。我得說,它看起來真的只是做一個顯示器,如果你不認爲它是值得的,你可能會考慮妥協。

相關問題