2014-10-20 32 views
0

這是我的模型:android:如何過濾基於子項目的項目?

public class AudioFile { 
    private int id; 
    private String fileName; 
    private String[] subStrings; 
    public AudioFile(int id, String fileName, String[] subStrings){ 
     this.id = id; 
     this.fileName = fileName; 
     this.subStrings = subStrings; 
    } 
     public int getId() { 
     return id; 
    } 
     public void setId(int id) { 
     this.id = id; 
    } 
     public String getFileName() { 
     return fileName; 
    } 
     public void setFileName(String fileName) { 
     this.fileName = fileName; 
    } 
     public String[] getSubStrings() { 
     return subStrings; 
    } 
     public void setSubStrings(String[] subStrings) { 
     this.subStrings = subStrings; 
    } 
     @Override 
    public String toString() { 
     return fileName; 
    } 
} 

我填充我的列表視圖中,並使用個性化的適配器。現在我想篩選基於subStrings數組列表視圖:

@SuppressLint("DefaultLocale") 
@Override 
protected FilterResults performFiltering(CharSequence constraint) { 
    constraint = constraint.toString().toLowerCase(); 
    if (constraint != null) { 
     suggestions.clear(); 
     for (AudioFile _data : itemsAll) { 
      if (_data.getSubStrings().contains(constraint)) { 
       suggestions.add(_data); 
      } 
     } 
     FilterResults filterResults = new FilterResults(); 
      filterResults.values = suggestions; 
      filterResults.count = suggestions.size(); 
      return filterResults; 
    } else { 
      return new FilterResults(); 
    } 
} 

正如你所看到的,我的結果基於_data.getSubStrings().equals(constraint)但它不工作只是進行篩選。
有什麼想法?

+0

什麼是getSubStrings()? – 2014-10-20 10:59:03

+0

它包含字符串數組 – 2014-10-20 10:59:46

+1

一旦有人開始回答問題,請不要改變問題,除了添加說明。將實際代碼從編譯但不工作的東西改變爲不編譯的東西,只會使人們的答案無效。 – 2014-10-20 11:09:53

回答

0

試試這種方式,希望這會幫助你解決你的問題。

for (AudioFile _data : itemsAll) { 
    String[] subStringsArray = _data.getSubStrings(); 
    for(String subString : subStringsArray){ 
     if(subString.equals(constraint)){ 
      suggestions.add(_data); 
      break; 
     } 
    } 
} 
+0

進行換行是否有任何投票原因? – 2014-10-20 11:08:40

0

equals是不正確的方式來檢查,因爲數據類型是不同的。你應該使用Arrays.asList(_data.getSubStrings()).contains(constraint)

+0

其實我測試過了,它不起作用。 – 2014-10-20 11:02:51

+0

如果這不起作用,那麼您需要更清楚地表達您的要求。這種解決方案的方式不合適?因爲對我來說似乎很好。 – 2014-10-20 11:10:25

+0

您更新的if語句與我的不同。您需要使用'Arrays.asList(...)' – 2014-10-20 11:13:41