Android:通过listview展示SQLite数据库数据

MainActivity.java

package com.example.myapplication;

import androidx.appcompat.app.AppCompatActivity;

import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Adapter;
import android.widget.BaseAdapter;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.TextView;

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {

MyOpenHelper myOpenHelper = null;
ListView lv = null;
MyAdapter adapter = null;

private ArrayList<Person> persons = new ArrayList<Person>();
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    lv = findViewById(R.id.lv_listview);
    myOpenHelper = new MyOpenHelper(this);
    SQLiteDatabase mdb = myOpenHelper.getReadableDatabase();
    adapter = new MyAdapter();

};

private class MyAdapter extends BaseAdapter {
    @Override
    public int getCount() {
        return persons.size();
    }

    @Override
    public Object getItem(int i) {
        return null;
    }

    @Override
    public long getItemId(int i) {
        return 0;
    }

    @Override
    public View getView(int i, View view, ViewGroup viewGroup) {
        View itemview = null;
        if (view == null) {
            itemview = View.inflate(MainActivity.this, R.layout.item, null);
        } else {
            itemview = view;
        }
        TextView tv_name = itemview.findViewById(R.id.tv_name);
        TextView tv_phone = itemview.findViewById(R.id.tv_phone);
        Person person = persons.get(i);
        tv_name.setText(person.name);
        tv_phone.setText(person.phone);
        return itemview;
    }
};

public void db_insert(View view) {
    SQLiteDatabase mdb = myOpenHelper.getReadableDatabase();
    mdb.execSQL("insert into info (name,phone) values('王五','13777777')");
    mdb.execSQL("insert into info (name,phone) values('王2','13888888')");
    mdb.execSQL("insert into info (name,phone) values('王4','188999555')");
    mdb.close();
    System.out.println("insert data to database");
}

public void db_query(View view) {
    SQLiteDatabase mdb = myOpenHelper.getReadableDatabase();
    Cursor cursor = mdb.rawQuery("select * from info", null);
    while (cursor.moveToNext()) {
        //String name = cursor.getString(1);

// System.out.println(cursor.getString(1));
Person person = new Person();
person.name = cursor.getString(1);
person.phone = cursor.getString(2);
persons.add(person);
}
cursor.close();
mdb.close();
for(Person person:persons) {
System.out.println(person.toString());
}
lv.setAdapter((ListAdapter) adapter);
}
}

MyOpenHelper.java:

package com.example.myapplication;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

import androidx.annotation.Nullable;

public class MyOpenHelper extends SQLiteOpenHelper {
public MyOpenHelper(Context context) {
super(context, “test.db”, null, 1);
}

@Override
public void onCreate(SQLiteDatabase db) {
    db.execSQL("create table info (_id integer primary key autoincrement,name varchar(20),phone varchar(20))");
    System.out.println("create database");
}

@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {

}

}

Person.java

package com.example.myapplication;

public class Person {
public String name;
public String phone;
public String toString() {
return “Person [name=” + name + “, phone=” + phone + “]”;
}
}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>

<Button
    android:id="@+id/bt_insert"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:onClick="db_insert"
    android:text="插入数据"/>
<Button
    android:id="@+id/bt_query"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:onClick="db_query"
    android:text="查询数据"
    android:layout_toRightOf="@+id/bt_insert"/>
<ListView
    android:id="@+id/lv_listview"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:text="Hello World!"
    android:layout_below="@+id/bt_query" />

item.xml

<?xml version="1.0" encoding="utf-8"?>

<ImageView
    android:id="@+id/iv_head"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@mipmap/ic_launcher"/>
<TextView
    android:id="@+id/tv_name"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_toRightOf="@id/iv_head"
    android:layout_marginTop="5dp"
    android:textSize="25dp"
    android:text="HELLO WORLD"/>
<TextView
    android:id="@+id/tv_phone"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_toRightOf="@+id/iv_head"
    android:layout_below="@+id/tv_name"
    android:layout_marginTop="5dp"
    android:textSize="20dp"
    android:text="hello world"/>

结果:

在这里插入图片描述

  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用ListViewSQLite数据库中的数据按照分类显示出来,需要先对数据库进行查询,将查询结果按照分类进行分组,然后将分组后的数据显示在ListView中。下面是一个基本的实现示例: 1. 查询数据库中的数据,并按照分类分组。 ```java String query = "SELECT category, name FROM mytable ORDER BY category"; Cursor cursor = db.rawQuery(query, null); Map<String, List<String>> data = new HashMap<>(); while (cursor.moveToNext()) { String category = cursor.getString(cursor.getColumnIndex("category")); String name = cursor.getString(cursor.getColumnIndex("name")); if (!data.containsKey(category)) { data.put(category, new ArrayList<>()); } data.get(category).add(name); } ``` 在上述代码中,首先查询数据库中的数据,将查询结果按照分类分组,存储到一个Map对象中。 2. 将分组后的数据显示在ListView中。 ```java List<String> categories = new ArrayList<>(data.keySet()); ListView listView = findViewById(R.id.listView); ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, categories); listView.setAdapter(adapter); listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { String category = categories.get(position); List<String> items = data.get(category); ArrayAdapter<String> adapter = new ArrayAdapter<>(MainActivity.this, android.R.layout.simple_list_item_1, items); listView.setAdapter(adapter); } }); ``` 在上述代码中,首先将分组后的分类列表显示在ListView中。当用户点击某个分类时,根据该分类从Map对象中获取该分类下的所有数据,并将数据显示在ListView中。 可以根据实际需求进行调整和优化,例如使用自定义的Adapter来实现更复杂的布局和样式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值