如何通过游标将对象存储到arraylist中?

qwr*_*qwr 3 android

我在游标的帮助下从sqlite数据库中获取对象.我想将它们存储在一个arraylist中.问题是我不提前知道我返回数据的大小.那么如何将它们放入arraylist?

码:

public Student findAll()
    {
        db = helper.getWritableDatabase();
        Cursor cursor = db.rawQuery("select sid, name, age from t_student", null 
                );

        if(cursor.moveToNext())
            return new Student(cursor.getInt(cursor.getColumnIndex("sid")), cursor.getString(cursor.getColumnIndex("name")), cursor.getInt(cursor.getColumnIndex("age")));
        return null;
    }

Main:

ArrayList<Student> studentArrayList = new ArrayList<Student>();

        studentArrayList.add(dao.findAll()); //doing this will only return the first object from the database
Run Code Online (Sandbox Code Playgroud)

SAL*_*MAN 7

每个ArrayList实例都有一个容量.容量是用于存储列表中元素的数组的大小.它始终至少与列表大小一样大.当元素添加到ArrayList时,其容量会自动增加.除了添加元素具有恒定的摊销时间成本这一事实之外,未指定增长策略的详细信息.

这将帮助您以更好的方式理解ArrayList.

public List<Student> findAll() {
        List<Student> studentArrayList = new ArrayList<Student>();
        db = helper.getWritableDatabase();
        Cursor cursor = db.rawQuery("select sid, name, age from t_student", null 
                );



         while(cursor.moveToNext()) {
               studentArrayList.add(new Student(cursor.getInt(cursor.getColumnIndex("sid")), cursor.getString(cursor.getColumnIndex("name")), cursor.getInt(cursor.getColumnIndex("age"))));
            }

            return studentArrayList ;
        }

    ArrayList<Student> studentArrayList = new ArrayList<Student>();

    studentArrayList=findAll();
Run Code Online (Sandbox Code Playgroud)

谢谢 :)