【发布时间】:2016-01-07 12:03:30
【问题描述】:
在我的主要活动中,我有一个类型为 HorizontalListView(自定义)的 calendarListView。
为此设置的适配器是这样的:
calendarListView.setAdapter(new CustomCalendarAdapter(this, listArrayX, listArrayY));
这很好用,我可以访问 CustomCalendarAdapter 中的所有函数,因为默认情况下它们只是覆盖基本适配器。
由于适配器被传递到 listview 类中,HorizontalListView 本身对 CustomCalendarAdapter 一无所知,即只要基础适配器类中存在函数,它就可以正常构建。
现在,我在自定义日历适配器中添加了一个新功能。
所以,例如:
public class CustomCalendarAdapter extends BaseAdapter{
...
public int getItemDate()
{
return 5;
}
如何从 HorizontalListView 中访问该功能?
我正在尝试使用 mAdapter.getItemDate。
(mAdapter在setAdapter函数中设置)
@Override
public void setAdapter(ListAdapter adapter) {
if (mAdapter != null) {
mAdapter.unregisterDataSetObserver(mDataObserver);
}
mAdapter = adapter;
mAdapter.registerDataSetObserver(mDataObserver);
mDataChanged = true;
requestLayout();
// reset();
}
正如我所提到的,适配器是在 setAdapter 中传入的,因此在构建时 CustomCalendarAdapter 中的功能不被理解。
我能想到的唯一方法是将 CustomCalendarAdapter 硬连线到 HorizontalListView 我不想这样做!
这样做,即将 ListAdapter 的所有实例更改为 CustomCalendarAdapter 可以正常工作,但我认为这不是一种明智的工作方式。
感谢任何帮助。
【问题讨论】:
-
您可以保留对您的适配器的引用
-
问题在于构建,因为目前 listview 需要一个 ListAdapter 类型的项目,因此它在构建时看不到自定义函数。
-
BaseAdapter是ListAdapter -
所以您正尝试从 CalendarListView 访问 CustomCalendarAdapter 中的自定义功能?
标签: android inheritance baseadapter horizontallistview