2016-04-29 71 views
2

我試圖按字面值的字母順序將此ListView放入列。我已經閱讀過關於這個主題的答案,但還沒有找到任何解決方案。我必須使用Comparable/Comparator嗎?ListView按字母順序無可比較

private ArrayList<HashMap<String, Object>> wordList; 
private static final String WORD = "word"; 
private static final String DEFINITION = "definition"; 
private static final String NOTES = "notes"; 
private SimpleAdapter adapter; 

ListView listView = (ListView) findViewById(R.id.listView); 
final ListView listView2 = (ListView) findViewById(R.id.listView2); 
wordList = new ArrayList<>(); 
HashMap<String, Object> hm; 

for (int i = word_counter - 1; i >= 0; i--) { 
    hm = new HashMap<>(); 
      hm.put(WORD, words[i]); 
      hm.put(DEFINITION, definitions[i]); 
      hm.put(NOTES, notes[i]); 
      wordList.add(hm); 
    } 

adapter = new SimpleAdapter(this, wordList, 
    R.layout.list_item, new String[]{WORD, DEFINITION, NOTES}, 
    new int[]{R.id.text1, R.id.text2, R.id.text3}); 

回答

1

對於自動對數據進行排序使用TreeSet中。 TreeSet是一個集合,其中輸入的數據將被排序,而不管您輸入數據的順序如何。

TreeSet ts=new TreeSet(); 
    for (int i=0;i<words.length;i++) 
    { 
     ts.add(words[i]+"-|-"+definitions[i]+"-|-"+notes[i]); 
    } 
    Iterator<String> itr=ts.iterator(); 
    while(itr.hasNext()){ 
     System.out.println(itr.next()); 
    } 

輸出將按升序排列。從這裏開始,使用「 - | - 」作爲sp​​lit()的參數來分割從TreeSet得到的字符串。根據需要使用每個元素。

+0

現在它的工作,thanx很多! –

+0

不客氣。 –