list.contains()在android中不起作用

时间:2017-02-05 09:11:31

标签: android arraylist

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();
}
            }
        });
}
////////////////////////////////////////////////////

我的列表包含你好,但我不知道为什么它不起作用。 &安培;对不起,如果已经被问到。问题是我需要一些示例代码,关于我的代码提前谢谢。

2 个答案:

答案 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;
        }