Android Studio 自定义 ArrayAdapter 传递 HashMap 而不是 ArrayList
Android Studio Custom ArrayAdapter passing HashMap instead of ArrayList
我有一个自定义适配器,我想传递一个 HashMap,其中 Foo 是一个自定义对象
HashMap<String, Foo> foos = new HashMap<String, Foo>();
//populate foos and pass to adapter
fooAdapter = new FooAdapter(getContext(), foos);
我的适配器是这样的
public class FooAdapter extends ArrayAdapter<Foo> {
public FooAdapter(Context context, HashMap<String, Foo> foos) {
super(context, R.layout.my_layout, foos);
}
我的问题是将 foos 传递给基本构造函数。我怎样才能让它接受 HashMap 而不是 ArrayList。如果我将它作为 ArrayList 传递,它工作正常,但 HashMap 对我的应用程序会更好,因为我使用的是 Firebase 并且在运行时需要密钥。
使用不可能的 ArrayList
。
那是因为 ArrayAdapter
没有接受 HashMap
的构造函数。如果您在第 105 行看到 ArrayAdapter source code,您会看到它在内部使用 List<T>
来存储其项目。
如果你想使用 HashMap
而不是 List
只需通过扩展 BaseAdapter
创建你自己的 HashMapAdapter
类似于源代码中所示的,除了你替换List
和 HashMap
并通过代码相应地更新此更改。
我有一个自定义适配器,我想传递一个 HashMap,其中 Foo 是一个自定义对象
HashMap<String, Foo> foos = new HashMap<String, Foo>();
//populate foos and pass to adapter
fooAdapter = new FooAdapter(getContext(), foos);
我的适配器是这样的
public class FooAdapter extends ArrayAdapter<Foo> {
public FooAdapter(Context context, HashMap<String, Foo> foos) {
super(context, R.layout.my_layout, foos);
}
我的问题是将 foos 传递给基本构造函数。我怎样才能让它接受 HashMap 而不是 ArrayList。如果我将它作为 ArrayList 传递,它工作正常,但 HashMap 对我的应用程序会更好,因为我使用的是 Firebase 并且在运行时需要密钥。
使用不可能的 ArrayList
。
那是因为 ArrayAdapter
没有接受 HashMap
的构造函数。如果您在第 105 行看到 ArrayAdapter source code,您会看到它在内部使用 List<T>
来存储其项目。
如果你想使用 HashMap
而不是 List
只需通过扩展 BaseAdapter
创建你自己的 HashMapAdapter
类似于源代码中所示的,除了你替换List
和 HashMap
并通过代码相应地更新此更改。