解释代码private List<Person> addPersonList() { List<Person> persons = new ArrayList<>(); String login_id = com.example.yj.bluetoothapplication.doctorview.LoginActivity.doctor_login; dbHelper1.getWritableDatabase(); SQLiteDatabase db = dbHelper1.getWritableDatabase(); Cursor cursor = db.query("Patient", new String[]{"id", "name", "alarm"}, "doctor_id=?", new String[]{login_id}, null, null, null); System.out.println(cursor.getCount()); if (cursor.moveToFirst()){ while (1 == 1){ //从表中获取id对应的名字、年龄、性别和医生工号 String id = cursor.getString(cursor.getColumnIndexOrThrow("id")); String name = cursor.getString(cursor.getColumnIndexOrThrow("name")); boolean alarm = cursor.getInt(cursor.getColumnIndexOrThrow("alarm")) == 1; if(cursor.isLast()){ break; //取出信息后判断游标是否已经遍历 } //读取信息后游标移至下一行 cursor.moveToNext(); // 将查询结果放入person对象中 Person person = new Person(id, name, alarm); if (!persons.contains(person) && person.getName() != null) { persons.add(person); } } } //刷新列表适配器 // personAdapter.notifyDataSetChanged(); return persons; }
时间: 2023-11-22 08:51:49 浏览: 66
这段代码主要是一个方法,用于从数据库中读取患者的信息并将其放入一个Person对象中,最后将所有的Person对象放入一个List集合中。具体的实现过程如下:
首先,定义了一个persons集合,用于存放所有的Person对象。
然后,获取了当前登录医生的ID,打开数据库连接,查询Patient表中所有医生ID为当前登录医生ID的患者信息。
接着,判断查询结果是否为空,如果不为空则进入while循环,循环条件为1==1,即一直循环直到遍历完所有的查询结果。
在while循环中,先获取当前行对应的id、name和alarm字段的值,将其放入Person对象中,并判断该对象是否已经存在于persons集合中,如果不存在则将其添加到集合中。
最后,返回persons集合。
需要注意的是,这段代码中的dbHelper1、Person和PersonAdapter都没有给出具体的实现,所以无法确定其具体作用。
相关问题
private ArrayList<Person> persons; public AdressBook() { persons = new ArrayList<Person>(); }是什么意思?
这段代码是定义了一个名为"AddressBook"的类,其中包含了一个名为"persons"的ArrayList(数组列表)对象。该数组列表中存储的是"Person"类的对象。
除此之外,还定义了一个无参构造函数"AddressBook()",在该函数中初始化了"persons"数组列表对象。这样,当创建AddressBook类的实例时,就会自动创建一个空的persons数组列表对象。
private List<Person> addPersonList() { List<Person> persons = new ArrayList<>(); String login_id = com.example.yj.bluetoothapplication.doctorview.LoginActivity.doctor_login; dbHelper1.getWritableDatabase(); SQLiteDatabase db = dbHelper1.getWritableDatabase(); Cursor cursor = db.query("Patient", new String[]{"id", "name", "alarm"}, "doctor_id=?", new String[]{login_id}, null, null, null); System.out.println(cursor.getCount()); if (cursor.moveToFirst()){ while (1 == 1){ //从表中获取id对应的名字、年龄、性别和医生工号 String id = cursor.getString(cursor.getColumnIndexOrThrow("id")); String name = cursor.getString(cursor.getColumnIndexOrThrow("name")); boolean alarm = cursor.getInt(cursor.getColumnIndexOrThrow("alarm")) == 1; if(cursor.isLast()){ break; //取出信息后判断游标是否已经遍历 } //读取信息后游标移至下一行 cursor.moveToNext(); // 将查询结果放入person对象中 Person person = new Person(id, name, alarm); if (!persons.contains(person) && person.getName() != null) { persons.add(person); } } } return persons; }如果cursor中有2条数据,最终persons会有几个对象
如果cursor中有2条数据,最终persons会有2个对象。因为在while循环中,每次将查询结果放入person对象中,只有当persons列表中不包含该person对象并且person对象的名称不为null时才将其添加到persons列表中。在这个过程中,如果有重复的person对象或person对象的名称为null,则不会被添加到persons列表中。因此,最终persons列表中只会包含有效的不重复的person对象。
阅读全文