2012-07-25 100 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); 
    } 

    //...