在 Android 中访问新的自定义 BaseAdapter 函数
Accessing new custom BaseAdapter function in Android
在我的主 activity 中,我有一个 calendarListView 类型 HorizontalListView
(自定义)。
适配器设置如下:
calendarListView.setAdapter(new CustomCalendarAdapter(this, listArrayX, listArrayY));
这工作正常,我可以访问 CustomCalendarAdapter 中的所有功能,因为默认情况下它们只是覆盖基本适配器。
由于适配器被传递到列表视图 class,HorizontalListView 本身对 CustomCalendarAdapter 一无所知,即只要基本适配器中存在函数 class,它就可以正常构建.
现在,我在自定义日历适配器中添加了一个新功能。
因此,例如:
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 工作正常,但我认为这不是一种明智的工作方式。
感谢任何帮助。
我要做的是将自定义功能放入界面中
public interface CustomAdapterFunctions {
int getItemDate();
}
然后在 setAdapter 方法中,将 ListAdapter 转换为 CustomAdapterFunctions
try {
CustomAdapterFunctions custom = (CustomAdapterFunctions) listAdapter;
catch (ClassCastException ex){
throw new ClassCastException("Adapters must implement CustomAdapterFunctions!");
}
确保您使用的任何适配器在与 CalendarListView 一起使用之前实现了此接口。
在我的主 activity 中,我有一个 calendarListView 类型 HorizontalListView
(自定义)。
适配器设置如下:
calendarListView.setAdapter(new CustomCalendarAdapter(this, listArrayX, listArrayY));
这工作正常,我可以访问 CustomCalendarAdapter 中的所有功能,因为默认情况下它们只是覆盖基本适配器。
由于适配器被传递到列表视图 class,HorizontalListView 本身对 CustomCalendarAdapter 一无所知,即只要基本适配器中存在函数 class,它就可以正常构建.
现在,我在自定义日历适配器中添加了一个新功能。
因此,例如:
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 工作正常,但我认为这不是一种明智的工作方式。
感谢任何帮助。
我要做的是将自定义功能放入界面中
public interface CustomAdapterFunctions {
int getItemDate();
}
然后在 setAdapter 方法中,将 ListAdapter 转换为 CustomAdapterFunctions
try {
CustomAdapterFunctions custom = (CustomAdapterFunctions) listAdapter;
catch (ClassCastException ex){
throw new ClassCastException("Adapters must implement CustomAdapterFunctions!");
}
确保您使用的任何适配器在与 CalendarListView 一起使用之前实现了此接口。