list.contains不起作用。 这是我从数据库中获取数据的列表。
////////List/////////////////
public List<Comment> getAllComments() {
List<Comment> comments = new ArrayList<Comment>();
Cursor cursor = database.query(MySQLiteHelper.TABLE_COMMENTS,
allColumns, null, null, null, null, null);
cursor.moveToFirst();
while (!cursor.isAfterLast()) {
Comment comment = cursorToComment(cursor);
comments.add(comment);
cursor.moveToNext();
}
// make sure to close the cursor
cursor.close();
return comments;
}
/////////////////////////////////////////////
datasource = new CommentsDataSource(this);
datasource.open();
final List list;
list = datasource.getAllComments();
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(list.contains("Hello")){
Toast.makeText(getApplicationContext(), "List Contains data", Toast.LENGTH_SHORT).show();
} ///////Here it always return false///////
else{
Toast.makeText(getApplicationContext(), "Data not found", Toast.LENGTH_SHORT).show();
}
}
});
}
////////////////////////////////////////////////////
我的列表包含你好,但我不知道为什么它不起作用。 &安培;对不起,如果已经被问到。问题是我需要一些示例代码,关于我的代码提前谢谢。
答案 0 :(得分:7)
我认为你必须在评论类中覆盖 equals()方法。 像
这样的东西 @Override
public boolean equals(Object obj) {
if (this.message.equals(((Comment)obj).getMessage()) {
return true;
}
return false;
}
在此示例中,消息将是您要比较的类的属性,您可以按照以下方式执行此操作
if(list.contains(new Comment("Hello")){
...
问候!
答案 1 :(得分:0)
您可以这样做:
boolean contains = false;
for (Comment c : list) {
if (c.text.equals("H"))
contains = true;
}