Java 为什么ArrayAdapter接受ArrayList<;字符串>;但未设置<;字符串>;作为参数?
我用OnItemClickListener实现了一个ListView,ArrayAdapter接受Java 为什么ArrayAdapter接受ArrayList<;字符串>;但未设置<;字符串>;作为参数?,java,android,android-arrayadapter,Java,Android,Android Arrayadapter,我用OnItemClickListener实现了一个ListView,ArrayAdapter接受ArrayList作为参数,但不接受集 这项工作: ArrayList<String> myEntries = new ArrayList<>(); ArrayAdapter<String> myArrayAdapter; ListView listView = (ListView) findViewById(R.id.myListView); myArrayA
ArrayList
作为参数,但不接受集
这项工作:
ArrayList<String> myEntries = new ArrayList<>();
ArrayAdapter<String> myArrayAdapter;
ListView listView = (ListView) findViewById(R.id.myListView);
myArrayAdapter = new ArrayAdapter<>(this, R.layout.listviewitem, myEntries);
listView.setAdapter(myArrayAdapter);
listView.setOnItemClickListener(this);
ArrayList myEntries=new ArrayList();
ArrayAdapter myArrayAdapter;
ListView ListView=(ListView)findViewById(R.id.myListView);
myArrayAdapter=新的ArrayAdapter(this,R.layout.listviewitem,myEntries);
setAdapter(myArrayAdapter);
setOnItemClickListener(this);
这不起作用:
Hashtable<String, File> myEntries = new Hashtable<>();
ArrayAdapter<String> myArrayAdapter;
ListView listView = (ListView) findViewById(R.id.myListView);
myArrayAdapter = new ArrayAdapter<>(this, R.layout.listviewitem, myEntries.keySet());
listView.setAdapter(myArrayAdapter);
listView.setOnItemClickListener(this);
Hashtable myEntries=new Hashtable();
ArrayAdapter myArrayAdapter;
ListView ListView=(ListView)findViewById(R.id.myListView);
myArrayAdapter=newArrayAdapter(this,R.layout.listviewitem,myEntries.keySet());
setAdapter(myArrayAdapter);
setOnItemClickListener(this);
我收到以下编译器错误:
Cannot resolve constructor 'ArrayAdapter(com.example.MainActivity, int, java.util.Set<java.lang.String>)'
无法解析构造函数'ArrayAdapter(com.example.MainActivity,int,java.util.Set)'
这两个myentry都存储字符串,为什么ArrayAdapter不接受集
为什么ArrayAdapter不接受该设置
因为API没有与Set
兼容的构造函数重载
我猜那是因为集合
不能被索引;i、 e.它不是“阵列式”。ArrayAdapter
设计用于调整数组和行为类似于数组的事物
以下是两个备选方案:
- 您可以将设置的内容复制到列表或数组中,然后继续使用ArrayAdapter。问题:通过适配器所做的更改不会更新原始集
- 您可以切换到CursorAdapter,并实现(或查找)一个游标类,该类在集合上提供只读或读写游标。问题:这只适用于为元素提供稳定排序的集合实现<代码>哈希集没有
ArrayAdapter需要一个列表,因为集合没有自然顺序,所以如果不知道顺序是什么,那么在有序列表中显示集合是没有意义的。如果不关心排序,您仍然可以将集合转换为列表类型,并且可以根据需要对结果列表进行排序。查看可用的重载。不能这样做,因为ArrayAdapter的构造函数没有接受类型集