2012-07-25 97 views
1

我有一個應用程序有一個sqlite數據庫whos內容放入一個數組列表,並通過列表視圖可查看。我的問題是,我無法按字母順序獲取該項目。我已實施Collections.sort()但收到綁定不匹配錯誤。任何想法綁定不匹配collections.sort

錯誤:

約束不匹配:Collections類型的通用方法sort(List<T>)不適用於參數(ArrayList<LoginDetails>)。推斷類型LoginDetails不是有界參數的有效替代<T extends Comparable<? super T>>

private ListView loginList; 
private Button webLogin; 
private ListAdapter loginListAdapter; 
private ArrayList<LoginDetails> loginArrayList; 

    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.login_listview); 


    loginList = (ListView) 
    findViewById(R.id.loginlist); 
    loginList.setOnItemClickListener(this); 

    webLogin = (Button) 
    findViewById(R.id.button3); 
    webLogin.setOnClickListener(this); 

    loginArrayList = new ArrayList<LoginDetails>(); 
    loginListAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, populateList()); 
    loginList.setAdapter(loginListAdapter); 

    Collections.sort(loginArrayList); //Bound mismatch error is here. 
    } 

LoginDetails:

public class LoginDetails { 

private String sName; 
private String wUrl; 
private String uName; 
private String pWord; 

public String getsName() { 
return sName; 
} 
public void setsName(String sName) { 
this.sName = sName; 
} 

public String getwUrl() { 
return wUrl; 
} 
public void setwUrl(String wUrl) { 
this.wUrl = wUrl; 
} 

public String getuName() { 
return uName; 
} 
public void setuName(String uName) { 
this.uName = uName; 
} 
public String getpWord() { 
return pWord; 
} 
public void setpWord(String pWord) { 
this.pWord = pWord; 
} 

} 
+4

不'LoginDetails'執行'Comparable'? – 2012-07-25 13:44:03

+0

如果您爲LoginDetails添加類聲明,將會非常有用。 – 2012-07-25 14:15:19

+0

Che,已添加登錄詳細信息類。 – user1165694 2012-07-25 16:19:11

回答

4

正如API文檔描述的,Collections.sort

All elements in the list must implement the Comparable interface.

確保LoginDetails實施Comparable

例如:

public class LoginDetails implements Comparable<LoginDetails>{ 
    //...   

    @Override 
    public int compareTo(LoginDetails another) { 
     return uName.compareTo(another.uName); 
    } 

    //...