Android Spinner 应用教程:数据库数据绑定 (android spinner 数据库)
Android应用程序已经成为了现代人生活中不可或缺的一部分,而应用程序中的Spinner组件也同样成为了不可或缺的一部分。Spinner组件是一种下拉列表框,用于提供多个选项以供用户选择。在Android应用程序开发中,直接在代码中添加数据源是困难的,因此使用数据库来存储这些选项的数据是一种更好的方法。这篇文章将介绍如何在Android程序中使用数据库数据绑定Spinner组件。
一、创建数据库
我们需要创建一个包含Spinner数据选项的数据库。在Android Studio中,使用SQLiteOpenHelper来创建数据库和数据表是最常见的方法。以下是创建数据库的步骤:
1.在Android Studio中打开项目,并打开app/build.gradle文件
2.添加以下代码:
“`
dependencies {
implementation ‘com.android.support:support-v4:24.2.0’
implementation ‘com.android.support:appcompat-v7:24.2.0’
implementation ‘com.android.support:design:24.2.0’
implementation ‘com.android.support:cardview-v7:24.2.0’
implementation ‘com.android.support:recyclerview-v7:24.2.0’
implementation ‘com.android.support:gridlayout-v7:24.2.0’
implementation ‘com.android.support:support-annotations:24.2.0’
implementation ‘com.android.support:multidex:1.0.1’
implementation ‘com.android.support:percent:24.2.0’
implementation ‘com.android.support.constrnt:constrnt-layout:1.0.2’
implementation ‘com.android.support:support-vector-drawable:24.2.0’
implementation ‘com.android.support:customtabs:24.2.0’
implementation ‘com.android.support:support-v13:24.2.0’
implementation ‘com.android.support:support-fragment:24.2.0’
implementation ‘com.android.support:support-core-utils:24.2.0’
implementation ‘com.android.support:support-core-ui:24.2.0’
implementation ‘com.google.android.gms:play-services-ytics:15.0.2’
implementation ‘com.squareup.okhttp3:okhttp:3.9.1’
implementation ‘com.squareup.okhttp3:logging-interceptor:3.9.1’
implementation ‘com.jakewharton:butterknife:8.8.1’
annotationProcessor ‘com.jakewharton:butterknife-compiler:8.8.1’
implementation ‘com.android.support:preference-v7:24.2.0’
implementation ‘com.squareup.retrofit2:retrofit:2.3.0’
implementation ‘com.squareup.retrofit2:converter-gson:2.3.0’
implementation ‘com.squareup.retrofit2:adapter-rxjava:2.3.0’
implementation ‘com.squareup.retrofit2:converter-scalars:2.3.0’
implementation ‘com.github.bumptech.glide:glide:3.7.0’
implementation ‘com.google.code.gson:gson:2.8.0’
implementation files(‘libs/gurobi.jar’)
implementation ‘com.google.android.gms:play-services-location:15.0.1’
implementation ‘com.google.android.gms:play-services-maps:15.0.1’
implementation ‘com.google.maps.android:android-maps-utils:0.5’
implementation ‘com.github.amlcurran.showcaseview:library:5.4.3’
implementation ‘me.dm7.barcodescanner:zbar:1.8.4’
implementation ‘com.leocardz:link-preview:2.2.1’
implementation ‘com.mikepenz:materialdrawer:6.0.6’
implementation ‘org.greenrobot:eventbus:3.0.0’
implementation ‘com.google.firebase:firebase-core:15.0.2’
implementation ‘com.google.firebase:firebase-ytics:15.0.2’
implementation ‘com.crashlytics.sdk.android:crashlytics:2.9.1’
implementation ‘com.google.android:flexbox:0.3.2’
implementation ‘com.github.bumptech.glide:glide:4.0.0’
annotationProcessor ‘com.github.bumptech.glide:compiler:4.0.0’
implementation ‘com.squareup.sqlbrite:sqlbrite:1.1.0’
implementation ‘com.squareup.leakcanary:leakcanary-android:1.5.4’
debugImplementation ‘com.squareup.leakcanary:leakcanary-android-no-op:1.5.4’
releaseImplementation ‘com.squareup.leakcanary:leakcanary-android-no-op:1.5.4’
implementation ‘com.facebook.stetho:stetho:1.5.0’
implementation ‘com.facebook.stetho:stetho-urlconnection:1.5.0’
implementation ‘com.facebook.stetho:stetho-okhttp3:1.5.0’
}
“`
3.在app目录下创建一个包namedb
4.编写以下SQLiteOpenHelper的子类,实现数据库的创建
“`
public class DatabaseHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = “spinnerdb.db”;
private static final int DATABASE_VERSION = 1;
private static final StringBuilder = new StringBuilder();
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
.setLength(0);
.append(“CREATE TABLE “).append(TABLE_NAME).append(“(“)
.append(_ID).append(” INTEGER PRIMARY KEY, “)
.append(COLUMN_NAME).append(” TEXT NOT NULL);”);
db.execSQL(.toString());
ContentValues values = new ContentValues();
values.put(COLUMN_NAME, “Apple”);
db.insert(TABLE_NAME, null, values);
values.clear();
values.put(COLUMN_NAME, “Banana”);
db.insert(TABLE_NAME, null, values);
values.clear();
values.put(COLUMN_NAME, “Cherry”);
db.insert(TABLE_NAME, null, values);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
.setLength(0);
.append(“DROP TABLE IF EXISTS “).append(TABLE_NAME);
db.execSQL(.toString());
onCreate(db);
}
}
“`
5.完成上面步骤之后,即可在Android应用程序中使用SQLiteOpenHelper来创建数据库和表
二、在Android应用程序中使用Spinner组件
接下来,我们需要使用Spinner组件来绑定数据库中存储的数据。以下是步骤:
1.打开activity_mn.xml文件并添加Spinner元素:
“`
android:id=”@+id/spinner”
android:layout_width=”match_parent”
android:layout_height=”wrap_content”
android:layout_marginTop=”10dp”/>
“`
2.打开MnActivity.java文件并添加以下代码来获取Spinner:
“`
Spinner spinner = (Spinner) findViewById(R.id.spinner);
“`
3.在MnActivity.java文件中添加以下代码来获取一个包含所有数据库数据的cursor对象:
“`
Cursor cursor = getContentResolver().query(DataContract.CONTENT_URI, null,
null, null, null);
“`
4.使用SimpleCursorAdapter来把数据库的数据绑定到Spinner上:
“`
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
android.R.layout.simple_spinner_item,
cursor, new String[]{DataContract.NAME},
new int[]{android.R.id.text1}, 0);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
“`
5.在Activity销毁时,关闭cursor对象:
“`
@Override
protected void onDestroy() {
super.onDestroy();
cursor.close();
}
“`
6.完成上面步骤之后,就能在应用程序中运行Spinner组件以及绑定数据库的数据了。
我们已经成功实现了在Android应用程序中使用数据库数据绑定Spinner组件。这将使应用程序的开发更加简单,并允许您轻松地在应用程序中将数据从不同的来源(如CSV、Excel等)中加载到Spinner中。使用Spinner组件可以将多个操作选择放在一个视图中,使用户体验得到极大的提高。