2014-01-08 21 views
0

如果我有一個對象,我想設置ArrayList,那麼語法是什麼?下面是獲取和設置(多其它字符串和整數設定內部Some_obj已對本實施例中被移除)的樣品對象:在對象內部獲取並設置ArrayList <String>以填充Spinner

public class Some_obj { 

    protected ArrayList<String> spinnerList = new ArrayList<String>(); 

    public ArrayList<String> getList() { return spinnerList; } 
    public void setList(ArrayList<String> spinnerList) { this.spinnerList = spinnerList; } 

    public Some_obj(ArrayList<String> _sl) { spinnerList = _sl; } 
} 

如何將聲明它的對象的內部,由於該電流代碼基本上無論何時需要爲微調器設置適配器,都可以設置一個新列表。我需要像這樣聲明列表嗎?

protected ArrayList<String> spinnerList; 

所以我可以做這樣的事情?

Some_obj obj = listViewCells.get(selectedPosition); 
obj.setList(listFromActivity); 

我目前能與listFromActivity成功填充了微調,但我看到它有利於內部Some_obj的listFromActivity存儲在不久的將來......它只是好像我無法弄清楚如何如果它在Some_obj中設置爲null,則在Some_obj中設置一個ArrayList。

+0

你在初始化listFromActivity? –

+0

我從一個web服務中抽取一些數據,需要進入listView單元格內的微調器。有些單元格有一個spinner,它在listView第一次加載時沒有它的選擇列表,所以我需要時從另一個web服務方法中拉出列表。所以當我確實去獲取選擇列表(listFromActivity)時,我想將它存儲在對象中,所以我不必運行另一個AsyncTask ......但是,它看起來像我修復它,所以我要回答我想我自己的問題。 – whyoz

+1

所以什麼不工作。 setList函數應該工作 –

回答

0

希望這可以幫助別人,即使我正確設置了列表。我需要重寫彈出所選內容的自然微調控件,因此我在適配器內部使用了spinnerOnTouch監聽器,其中「holder」是保存單元內容的類。因此,我將偵聽器設置在適配器的getView()中,如下所示:

holder.spinner.setOnTouchListener(spinnerOnTouch);

沒有得到太多的細節什麼我固定在過去一小時,這裏是拉動正確obj.list爲已在填充它選擇一個微調的工作代碼:

private View.OnTouchListener spinnerOnTouch = new View.OnTouchListener() { 
    public boolean onTouch(View v, MotionEvent event) { 
     selectedPosition = Integer.parseInt(v.getTag().toString()); 
     Some_obj obj = cells.get(selectedPosition); 
     if (event.getAction() == MotionEvent.ACTION_UP) { 
      adapter = null; 
      if(obj.list == null) { 
       adapter = new ArrayAdapter<String>(mContext, R.layout.spinner_cell, listFromActivity); 
       spinner = (Spinner)v.findViewById(R.id.spinner); 
       spinner.setAdapter(adapter); 
       new GetSelectionsTask().execute(); 
      } 
      else 
      { 
       adapter = new ArrayAdapter<String>(mContext, R.layout.spinner_cell, obj.list); 
       spinner = (Spinner)v.findViewById(R.id.spinner); 
       spinner.setAdapter(adapter); 
      } 
     } 
     return false; 
    } 
}; 

朗故事總結,你應該避免嘗試在ListView中添加spinners,因爲你必須做很多工作來保持你在適配器的getView()中的位置,微調器的選擇以及更新與每個列表關聯的對象。 。不要提到spinner出現時的條件,因爲getView()方法會將其位置更改爲0,無論您使用的是哪個單元格。

相關問題