是否可以使用一個適配器類(和它的實例)(例如自己的子類ArrayAdapter<ownDataType>
兩個(或多個)不同的看法?在「適配器」上使用兩個(或多個)父視圖?
在我Activity
,我有一個用來顯示兩個Spinner
對象(和選擇)相關數據:父類別列表和所選父類別的子類別列表當然,子類別Spinner
中的列表更新(設置新的ArrayAdapter
),當父類別但是,我也希望能夠在創建活動時直接設置子類別(並自動選擇父類別),這使事情變得複雜化。現在乾淨的解決方案是創建一個自己的Adapter-Class(例如,派生自ArrayAdapter<CategoryPair>
,其中CategoryPair
是一個簡單的類,它包含一對父類和子類),並且此自己的適配器類處理所有邏輯以保持數據一致(在那裏更簡單)。
在Adapter
級的getView(int position, View convertView, ViewGroup parent)
方法中,我需要可靠地識別我的活動中兩個對象中的哪一個需要創建視圖。
我可以依靠parent
參數嗎?
你認爲我的想法是不錯的嗎?
編輯:代碼示例:
我的適配器類:
public class CategoryPair
{
Category parent;
Category sub;
}
public class CategoriesAdapter extends ArrayAdapter<CategoryPair> {
private Spinner parentSpinner;
private Spinner subSpinner;
public CategoriesAdapter(Context context, int textViewResourceId, Spinner par, Spinner sub) {
super(context, textViewResourceId);
parentSpinner = par;
subSpinner = sub;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (parent == parentSpinner)
{
//
}
else if (parent == subSpinner)
{
//
}
else
{
Log.e(TAG, "Invalid parent in CategoriesAdapter");
}
return super.getView(position, convertView, parent);
}
不,我的意思是爲我的Activity的兩個'Spinner'使用同一個類的實例。所以每個'Activity'實例爲它的'Spinner'中的兩個使用* one *'Adapter'實例。我今晚會發布代碼示例(CET)。 – IanH 2012-01-02 09:02:34
我不確定底層適配器代碼是否會讓你這樣做,但無論如何,我認爲這不是標準做法。您可以控制視圖中當前選定的對象,這將是完成我認爲您想要做的事情的理想方式。 – dmon 2012-01-03 01:20:29