ArrayAdapter<ownDataType>
是否可以使用一个适配器类(及其实例)(例如,两个(或更多)不同视图的自己的子类?
在我的Activity
中,我有两个Spinner
对象用于显示(和选择)相关数据:父类别列表和所选父类别的子类别列表。当然,当父类别更改时,子类别中的列表Spinner
会更新(设置一个新的)。ArrayAdapter
但是,我也希望能够在创建 Activity 时直接设置子类别(并自动选择父类别)。这使事情变得复杂。
我现在对一个简单而干净的解决方案的想法是创建一个自己的适配器类(例如,派生自ArrayAdapter<CategoryPair>
,其中CategoryPair
是一个包含一对父类和子类的简单类)并且这个自己的适配器类处理所有逻辑以保持数据一致(那里简单得多)。
在 -class 的getView(int position, View convertView, ViewGroup parent)
方法中,Adapter
我需要可靠地识别我需要为Spinner
我的活动中的两个对象中的哪一个创建视图。
我可以依赖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);
}