如何从sqlite数据库中检索所有数据到listview?

时间:2017-08-09 22:09:40

标签: android listview android-sqlite

如何将所有数据从sqlite显示到列表视图?

每次单击“查看全部按钮”时,即使添加多个数据,也只显示一个数据。我怎样才能显示我的所有数据?

谢谢!

以下是我的代码:

MainActivity.java

if(view==btnViewAll){
        setContentView(R.layout.activity_view_all);

       TextView id = (TextView)findViewById(R.id.idno);
       TextView name = (TextView)findViewById(R.id.name);
       TextView grade = (TextView)findViewById(R.id.grade);
        TextView school = (TextView)findViewById(R.id.school);
        TextView program = (TextView)findViewById(R.id.program);
        TextView course = (TextView)findViewById(R.id.course);
        TextView email = (TextView)findViewById(R.id.email);
        TextView bday = (TextView)findViewById(R.id.bday);
        TextView address = (TextView)findViewById(R.id.address);
        TextView  gender = (TextView)findViewById(R.id.gender);

        Cursor c = db.rawQuery("SELECT *  FROM student", null);

        if (c.moveToFirst()){
            id.setText(c.getString(0));
            name.setText(c.getString(1));
            grade.setText(c.getString(2));
            school.setText(c.getString(3));
            program.setText(c.getString(4));
            course.setText(c.getString(5));
            email.setText(c.getString(6));
            bday.setText(c.getString(7));
            address.setText(c.getString(8));
            gender.setText(c.getString(9));
        }
    }
}

Here is the layout where i want to display all my data

enter image description here

3 个答案:

答案 0 :(得分:0)

你能先解释一下你的问题吗?您想在学生数据库中显示多个学生或多个数据字段吗?请看这里寻求帮助。

Sqlite how to get string items using cursor

使用getColumnIndex()代替getString,因为列号可以更改。你也可以显示你的数据库吗?

答案 1 :(得分:0)

     store data in arraylist and pass this list to adapter.
    Make class Student

public class Student {
String ID,name,grade,school,program,course,email,bday,address,gender;
(getter and setter)
}

        EX : 
        ArrayList<Student> studentDetailsList= new ArrayList<>();   


         Cursor c = db.rawQuery("SELECT *  FROM student", null);

                    if (c.moveToFirst()){
                       Student s = new Student();
                       s.setID(c.getString(0));
                    s.setName(c.getString(1));
                    s.setGrade(c.getString(2));
                    s.setSchool(c.getString(3));
                    s.setProgram(c.getString(4));
                    s.setCourse(c.getString(5));
                    s.setEmail(c.getString(6));
                    s.setBday(c.getString(7));
                    s.setAddress(c.getString(8));
                    s.setGender(c.getString(9));
                    }
        studentDetailsList.add(s);


    Now pass this list to adapter and then set data to views


In adapter:

Student ss = studentDetailsList.get(position);
//now set data to your textviews
//ex. youridtextview.setText(ss.getID);

答案 2 :(得分:0)

为什么在使用一些非常小的代码时可以编写额外代码。

首先为所需数据制作POJO或Bean类。

public class Student {
   String ID,name,grade,school,program,course,email,bday,address,gender;
   (getter and setter)
}

接下来只需创建一个“Student”类列表,并像这样调用SQLite查询 -

 List<Student> studentDetailsList= new ArrayList<>();
 studentDetailsList = db.rawQuery("SELECT *  FROM student", null);

您可以轻松访问它。