【问题标题】:No interface method stream()Ljava/util/stream/Stream; [duplicate]没有接口方法stream()Ljava/util/stream/Stream; [复制]
【发布时间】:2020-01-26 11:55:18
【问题描述】:

我正在尝试过滤我的列表,但我真的不知道出了什么问题。 我将 Java 1.8 用于 lambda 函数,我的项目 API 我认为它是 21; 错误: 没有接口方法stream()Ljava/util/stream/Stream;在类 Ljava/util/List 中;或其超类

('java.util.List' 的声明出现在 /system/framework/core-libart.jar 中) 在 com.example.revizii2020eu.ListaActivity.modifyMyAdapter(ListaActivity.java:98) 在 com.example.revizii2020eu.ListaActivity.access$200(ListaActivity.java:28) 在 com.example.revizii2020eu.ListaActivity$3.onClick(ListaActivity.java:121)

@RequiresApi(api = Build.VERSION_CODES.N)
    private void modifyMyAdapter(final String myFirstLetter) {
        ArrayList<Revizie> newList = (ArrayList<Revizie>) lista.stream().filter(r -> r.getTip().equalsIgnoreCase(myFirstLetter)).collect(Collectors.toList());
        CustomAdapter newAdapter = new CustomAdapter(getApplicationContext(), newList);
        mListview.setAdapter(newAdapter);
        newAdapter.notifyDataSetChanged();
    }
private void filter(){
        Etletter = findViewById(R.id.Etsearch); //edittext
        btnFilter = findViewById(R.id.buttonFilter);
        btnFilter.setOnClickListener(new View.OnClickListener() { //buton de filtu
            @RequiresApi(api = Build.VERSION_CODES.N)
            @Override
            public void onClick(View v) {
                String myFilterLetter = Etletter.getText().toString();
                switch (myFilterLetter){
                    case "N" :
                        modifyMyAdapter("Normala");
                        break;
                    case "C" :
                        modifyMyAdapter("Complexa");
                        break;
                    case "M" :
                        modifyMyAdapter("Medie");
                        break;
                    case "T" :
                        CustomAdapter newAdapter = new CustomAdapter(getApplicationContext(), lista);
                        mListview.setAdapter(newAdapter);
                        newAdapter.notifyDataSetChanged();
                        break;
                }
            }
        });

【问题讨论】:

  • 您需要 API 级别 >= 24 才能使用 Java Stream API。

标签: java android list lambda collections


【解决方案1】:

Android 从版本 7 (Nougat) 开始支持 Java 8。

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { 

       // do fillter code here
 }else{
      show some toast message or thing you need to do
 }
}

【讨论】:

  • 如果仍然卡住,请告诉我
  • 没有更多的休息,但仍然无法正常工作,它没有过滤我的列表
  • 还是同样的错误?
  • 不,没有更多错误,但它没有过滤:(
  • 给我一些时间我们会修复它
猜你喜欢
  • 2019-02-21
  • 2019-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-01
  • 2019-11-08
  • 2016-03-20
  • 1970-01-01
相关资源
最近更新 更多