Android ListView 数据库查询

在Android开发中,我们经常需要从数据库中查询数据并将其展示到ListView中。ListView是Android中常用的列表视图控件,可以展示多个可滚动的列表项。本文将介绍如何进行数据库查询,并将查询结果展示到ListView中。

数据库查询

在Android中,我们可以使用SQLite数据库进行数据存储和查询。SQLite是一款轻型的关系型数据库管理系统,本地存储方式简单高效。Android提供了SQLiteOpenHelper类来管理数据库的创建和版本管理等操作。

以下是一个简单的数据库查询示例,假设我们有一个名为"students"的数据库表,包含"id"和"name"字段。

// 创建数据库查询的辅助类
public class DatabaseHelper extends SQLiteOpenHelper {
    private static final String DATABASE_NAME = "students.db";
    private static final int DATABASE_VERSION = 1;

    public DatabaseHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        // 创建数据库表
        db.execSQL("CREATE TABLE students (id INTEGER PRIMARY KEY, name TEXT)");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // 升级数据库
        db.execSQL("DROP TABLE IF EXISTS students");
        onCreate(db);
    }

    // 查询数据库中的数据
    public Cursor getAllStudents() {
        SQLiteDatabase db = getReadableDatabase();
        return db.query("students", null, null, null, null, null, null);
    }
}

以上代码中,我们通过继承SQLiteOpenHelper类创建了一个数据库帮助类DatabaseHelper。在onCreate方法中,我们创建了名为"students"的数据库表。在getAllStudents方法中,我们使用getReadableDatabase方法获取可读取的数据库对象,然后使用query方法查询所有的学生数据,并返回Cursor对象。

ListView展示查询结果

接下来,我们将查询结果展示到ListView中。我们需要使用适配器(Adapter)来将数据与ListView进行绑定。

以下是一个简单的适配器示例,用于将数据库查询结果展示到ListView中。

public class StudentAdapter extends CursorAdapter {
    public StudentAdapter(Context context, Cursor c) {
        super(context, c, 0);
    }

    @Override
    public View newView(Context context, Cursor cursor, ViewGroup parent) {
        return LayoutInflater.from(context).inflate(android.R.layout.simple_list_item_1, parent, false);
    }

    @Override
    public void bindView(View view, Context context, Cursor cursor) {
        TextView textView = view.findViewById(android.R.id.text1);
        String name = cursor.getString(cursor.getColumnIndexOrThrow("name"));
        textView.setText(name);
    }
}

以上代码中,我们创建了一个名为StudentAdapter的适配器类,继承自CursorAdapter。在newView方法中,我们使用LayoutInflater来创建列表项的布局,这里使用了系统自带的简单列表项布局android.R.layout.simple_list_item_1。在bindView方法中,我们从Cursor中获取学生姓名数据,并将其设置到布局中的TextView中。

接下来,在Activity中使用ListView和适配器展示查询结果。

public class MainActivity extends AppCompatActivity {
    private ListView listView;
    private DatabaseHelper databaseHelper;
    private StudentAdapter studentAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        listView = findViewById(R.id.listView);
        databaseHelper = new DatabaseHelper(this);
        studentAdapter = new StudentAdapter(this, databaseHelper.getAllStudents());

        listView.setAdapter(studentAdapter);
    }
}

以上代码中,我们在MainActivity的onCreate方法中,使用setContentView方法设置布局,然后获取ListView控件,并创建DatabaseHelper和StudentAdapter对象。最后,将StudentAdapter对象设置到ListView中。

效果展示

下面是本文示例代码的运行效果:

效果展示

总结

本文介绍了如何进行数据库查询,并将查询结果展示到ListView中。通过使用SQLiteOpenHelper类创建数据库帮助类,我们可以进行数据库的创建和版本管理。通过使用CursorAdapter适配器,我们可以将数据库查询结果与ListView进行绑定,并展示在界面上。

通过学习本文示例,你可以更好地理解和掌握Android中ListView的使用,以及与数据库的交互方法。

以上就是Android ListView数据库查询的相关内容,希望对你有所帮助!

甘特图

gantt
    dateFormat  YYYY-MM-DD
    title       Android ListView