要在Android List View中动态填充数据,你可以使用适配器(Adapter)来连接数据库和List View。下面是一个使用SimpleCursorAdapter和SQLite数据库来动态填充List View的示例代码:
public class DatabaseHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "mydatabase.db";
private static final int DATABASE_VERSION = 1;
private static final String TABLE_NAME = "mytable";
private static final String COLUMN_ID = "_id";
private static final String COLUMN_NAME = "name";
// 构造函数
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
String query = "CREATE TABLE " + TABLE_NAME + " (" +
COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
COLUMN_NAME + " TEXT)";
db.execSQL(query);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
onCreate(db);
}
public void insertData(String name) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(COLUMN_NAME, name);
db.insert(TABLE_NAME, null, values);
db.close();
}
public Cursor getAllData() {
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery("SELECT * FROM " + TABLE_NAME, null);
return cursor;
}
}
public class MainActivity extends AppCompatActivity {
private ListView listView;
private DatabaseHelper databaseHelper;
private SimpleCursorAdapter cursorAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = findViewById(R.id.listView);
databaseHelper = new DatabaseHelper(this);
// 获取数据库中的所有数据
Cursor cursor = databaseHelper.getAllData();
// 定义要显示的列名
String[] columns = new String[] {DatabaseHelper.COLUMN_NAME};
// 定义要显示的控件id
int[] to = new int[] {R.id.textViewName};
// 创建适配器
cursorAdapter = new SimpleCursorAdapter(this, R.layout.list_item, cursor, columns, to, 0);
// 将适配器设置到List View
listView.setAdapter(cursorAdapter);
}
// 在某个事件触发时添加数据到数据库并更新List View
public void addButtonClicked(View view) {
EditText editTextName = findViewById(R.id.editTextName);
String name = editTextName.getText().toString();
databaseHelper.insertData(name);
// 更新List View
Cursor newCursor = databaseHelper.getAllData();
cursorAdapter.swapCursor(newCursor);
editTextName.setText("");
}
}
这样,当点击添加按钮时,会将EditText中的文本插入到数据库,并更新List View中显示的数据。