2011-04-29 66 views
0

我收到了一些調整列表項目在我的媒體播放器應用程序中顯示的請求。Android:從列表視圖項中刪除「The」

當前任何以「The」開頭的條目都按照您的預期排序。許多用戶希望使用標題中的第二個單詞對項目進行排序。

有人可以告訴我們該做什麼?在獲取遊標或應用於listview時會調整它嗎?

任何幫助將不勝感激。

謝謝你, 喬希

UPDATE:

謝謝大家的答案,但我仍然在努力尋找適用於我的情況下提出的解決方案。

我正在使用一個簡單的光標來獲取數據集。下面的代碼它的片斷:

audioCursor = getContentResolver().query(MediaStore.Audio.Artists.EXTERNAL_CONTENT_URI, cols, 
      null, null,AudioColumns.ARTIST + " COLLATE LOCALIZED ASC"); 
     startManagingCursor(audioCursor);   


     setListAdapter(new MyABCAdapter(this, R.layout.list_item, 
       audioCursor, new String[]{AudioColumns.ARTIST,MediaStore.Audio.Artists.NUMBER_OF_TRACKS}, 
       new int[]{android.R.id.text1, android.R.id.text2})); 

我也有一個實用工具,成功地調整進入文本,改變「藝術家」到「藝術家的」,但它並不適用,直到bindView和名單早已被排序:

private String fixFileName(String fileName) { 
    ... 
    if (fileName.startsWith("The")){ 

     fileName = fileName.replace("The ", ""); 
     fileName = fileName.concat(",The"); 
    } 


    return fileName; 
} 

我的問題是:

1)有什麼辦法在創建列表之前fixFileName應用到光標? 2)如果這是不可能的,是否有辦法在bindview後使用listview?

謝謝!

+0

更新:我想tto – Josh 2011-04-30 12:31:39

回答

0

讓您的列表項延伸Comparable。在compareTo(..)方法中,編寫自定義比較代碼(可能使用"the".equalsIgnoreCase(fileName.subString(0, 3))),使「The ...」成爲特例。

0

您是否使用ArrayList<String>作爲標題?我可以想到的一種方法是實現您自己的接口Comparable。這將包括在方法compareTo(...)的內部,刪除任何詞,如「The,」A「等,並返回字符串其餘部分的比較。

0

當您將項目添加到列表中時,執行Collections.sort )與一個自定義的比較器。

class CustomComp implements Comparator 
{ 
    public int compare(Object obj1, Object obj2) 
    { 
     ... 
     if(obj1.toString().toLowerCase().startsWith("the")) 
      sort by second word instead 
     ... 
    } 
} 
相關問題