2017-11-27 16 views
-1

アンドロイドのリストの中でEditTextを使用して検索フィルタを適用したいと思います。Linqを使用した検索フィルタ

今のところ私はforループ(以下のコード)を使用していました。

private List<AllAttendance> filter(List<AllAttendance> mAttendanceList, CharSequence charSequence) { 

    final String text = String.valueOf(charSequence).toLowerCase(); 


    List<AllAttendance> filteredList = new ArrayList<>(); 
    for (AllAttendance attendance : mAttendanceList){ 

     if (attendance.getMandalName().toLowerCase().contains(text) || attendance.getSabhaName().toLowerCase().contains(text) || attendance.getSabhaDate().toLowerCase().contains(text)) 
      filteredList.add(attendance); 
    } 
    return filteredList; 
} 

上記のコードはうまくいきます。しかし、私はlinq nと置き換えます。私はレコードを取得していません。

private List<AllAttendance> filter(List<AllAttendance> mAttendanceList, CharSequence charSequence) { 

    final String text = String.valueOf(charSequence).toLowerCase(); 
    List<AllAttendance> filteredList = 
      Linq.stream(mAttendanceList) 
        .where(c -> c.getSabhaName().contains(text)) 
        .toList(); 
    return filteredList; 
} 
+1

JavaでのLINQ

はこれを置き換えますか?それは存在しますか? – jayeshsolanki93

+0

@ jayeshsolanki93はい。 – Jacqulizer

答えて

0

まずStream APIもそれにwhere方法を持っていません。フィルタリング機能を実現するには、Streamでfilterを使用する必要があります。

List<AllAttendance> filteredList = 
     Linq.stream(mAttendanceList) 
      .where(c -> c.getSabhaName().contains(text)) 
      .toList(); 

List<AllAttendance> filteredList = 
     mAttendanceList.stream() 
      .filter(c -> c.getSabhaName().contains(text)) 
      .collect(Collectors.toList()); 
関連する問題