无法推断 ArrayAdapter<> 的类型参数

Cannot infer type arguments for ArrayAdapter<>

我仍在摆弄我的日历,我几乎已经成功地将 https://github.com/SundeepK/CompactCalendarView 整合到我的一个片段中。只剩下一个错误,我做了一些研究,其他人也遇到了问题,例如 ArrayList<>。

示例代码:

final ArrayAdapter adapter = new ArrayAdapter<>
            (this,android.R.layout.simple_list_item_1, mutableBookings);

IDE 说:

Error:(87, 38) error: cannot infer type arguments for ArrayAdapter<>

注意:C:...\Uebersicht.java 使用或覆盖已弃用的 API。 注意:使用 -Xlint:deprecation 重新编译以获取详细信息。

我已经试过重新编译了,结果好像不行

Uebersicht.java:87: error: cannot find symbol
    final ArrayAdapter adapter = 
          new ArrayAdapter<>(this,android.R.layout.simple_list_item_1, mutableBookings);


Uebersicht.java:87: error: cannot find symbol 
final ArrayAdapter adapter = 
          new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, mutableBookings);    


Uebersicht.java:87: error: package android.R does not exist
    final ArrayAdapter adapter = 
          new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, mutableBookings);    

如果有必要,我也可以 post 我的完整片段 class,它必须与我的 API 和 ArrayAdapter 使用的 API 相关吗?别忘了我只是一个初学者,我正在尝试自己做一些事情。

尝试在您的 Adapter 声明中使用类型。您缺少 mutableBookingstype:

final ArrayAdapter adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mutableBookings);

您需要将上下文传递给ArrayAdapter 的构造函数。您实际上是在片段 class 中对其进行初始化,因此 this 作为上下文无效。试试打电话

final ArrayAdapter adapter = new ArrayAdapter<String>(getActivity(), 
                                android.R.layout.simple_list_item_1,
                                mutableBookings);

有时候方法不运行直接在activity里面访问不到,不是因为这个,而是因为getApplicationContext()

    ArrayAdapter adapter = new ArrayAdapter<>(getApplicationContext(), android.R.layout.simple_list_item_1, mutableBookings);

如果你在片段中,那么你应该使用

ArrayAdapter<String> adapter = new ArrayAdapter<>(**getContext()**,android.R.layout.simple_list_item_1,items);

当我使用下面的代码时,我遇到了与错误相同的错误:无法推断 ArrayAdapter<> 的类型参数:

ArrayList<String> arrayListward_items=new ArrayList<>(Arrays.asList(wardItemsKisumuSeme));
ArrayAdapter<String> ward_itemsAdapter=new ArrayAdapter<>(this,R.layout.style_spinner,arrayListward_items);
                    wardSpinner.setAdapter(ward_itemsAdapter);

我将 this 更改为 getApplicationContext() 并且能够修复错误,试试看:

ArrayList<String> arrayListward_items=new ArrayList<>(Arrays.asList(wardItemsKisumuSeme));
ArrayAdapter<String> ward_itemsAdapter=new ArrayAdapter<>(getApplicationContext(),R.layout.style_spinner,arrayListward_items);
                    wardSpinner.setAdapter(ward_itemsAdapter);