SQLiteDatabase游标中的java SimpleCursorAdapter未在Spinner适配器中正确显示
我正在尝试连接查询数据库并在微调器中显示结果。以下是我到目前为止的情况。不幸的是,微调器只显示应从查询返回的最后一行。因此,从上面的例子来看,只有“猫王”出现在列表中。我尝试过使用“Cursor.moveToFirst()”(如您所见),但没有成功
我意识到我每次打开数据库都会重建和更新它。我现在是故意这么做的
package com.conceptualsystems.安卓4api.sms;
import java.util.List;
import java.util.ArrayList;
import java.util.LinkedList;
import 安卓.app.Activity;
import 安卓.app.Dialog;
import 安卓.app.AlertDialog;
import 安卓.content.Context;
import 安卓.content.DialogInterface;
import 安卓.content.Intent;
import 安卓.content.ContentValues;
import 安卓.database.Cursor;
import 安卓.database.sqlite.SQLiteOpenHelper;
import 安卓.database.sqlite.SQLiteDatabase;
import 安卓.util.Log;
import 安卓.view.Window;
import 安卓.view.View;
import 安卓.view.Menu;
import 安卓.view.MenuInflater;
import 安卓.view.MenuItem;
import 安卓.view.ContextMenu;
import 安卓.view.ContextMenu.ContextMenuInfo;
import 安卓.view.LayoutInflater;
import 安卓.os.Bundle;
import 安卓.widget.ArrayAdapter;
import 安卓.widget.Button;
import 安卓.widget.Spinner;
import 安卓.widget.AdapterView;
import 安卓.widget.ListView;
import 安卓.widget.EditText;
import 安卓.widget.Toast;
import 安卓.widget.SimpleCursorAdapter;
public class smsActivity extends Activity
{
private static class smsDbOpenHelper extends SQLiteOpenHelper {
smsDbOpenHelper(Context context) {
super(context,smsDbSchema.DATABASE_NAME, null, smsDbSchema.DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(smsDbSchema.CustomerSchema.CREATE_TABLE);
db.execSQL(smsDbSchema.ProductSchema.CREATE_TABLE);
}
@Override
public void onOpen(SQLiteDatabase db) {
//open db
db.execSQL("DROP TABLE IF EXISTS " + smsDbSchema.CustomerSchema.TABLE_NAME);
db.execSQL("DROP TABLE IF EXISTS " + smsDbSchema.ProductSchema.TABLE_NAME);
this.onCreate(db);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
//upgrade db
}
}
private smsDbOpenHelper mDbHelper;
private SQLiteDatabase mDb;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
mDbHelper = new smsDbOpenHelper(getApplicationContext());
mDb = mDbHelper.getReadableDatabase();
//fill customer table with some fake data
ContentValues cv = new ContentValues();
cv.put(smsDbSchema.CustomerSchema.COLUMN_NAME, "Charles Keith Gilliam");
cv.put(smsDbSchema.CustomerSchema.COLUMN_NAME, "Jarrod Martin");
cv.put(smsDbSchema.CustomerSchema.COLUMN_NAME, "John Lennon");
cv.put(smsDbSchema.CustomerSchema.COLUMN_NAME, "Sammy Hagar");
cv.put(smsDbSchema.CustomerSchema.COLUMN_NAME, "David Lee Roth");
cv.put(smsDbSchema.CustomerSchema.COLUMN_NAME, "Keith Richards");
cv.put(smsDbSchema.CustomerSchema.COLUMN_NAME, "Steven Tyler");
cv.put(smsDbSchema.CustomerSchema.COLUMN_NAME, "Brent Michaels");
cv.put(smsDbSchema.CustomerSchema.COLUMN_NAME, "Eddie Veder");
cv.put(smsDbSchema.CustomerSchema.COLUMN_NAME, "Kurt Cobain");
cv.put(smsDbSchema.CustomerSchema.COLUMN_NAME, "Elvis Presley");
cv.put(smsDbSchema.CustomerSchema._ID, "0298437598745");
cv.put(smsDbSchema.CustomerSchema._ID, "7585684317298");
cv.put(smsDbSchema.CustomerSchema._ID, "7585684317298");
cv.put(smsDbSchema.CustomerSchema._ID, "7585684317298");
cv.put(smsDbSchema.CustomerSchema._ID, "7585684317298");
cv.put(smsDbSchema.CustomerSchema._ID, "7585684317298");
cv.put(smsDbSchema.CustomerSchema._ID, "7585684317298");
cv.put(smsDbSchema.CustomerSchema._ID, "7585684317298");
cv.put(smsDbSchema.CustomerSchema._ID, "7585684317298");
cv.put(smsDbSchema.CustomerSchema._ID, "7585684317298");
cv.put(smsDbSchema.CustomerSchema._ID, "7585684317298");
mDb.insert(smsDbSchema.CustomerSchema.TABLE_NAME, null, cv);
//cv.
setScreen(R.layout.inbound);
Spinner custSpn = (Spinner)findViewById(R.id.cust_spn);
Cursor custCur = null;
try {
custCur = mDb.query(smsDbSchema.CustomerSchema.TABLE_NAME, null, null, null, null, null, null);
} catch(Exception e) {
Log.e("smsdb", e.toString());
}
custCur.moveToFirst();
startManagingCursor(custCur);
SimpleCursorAdapter qc = new SimpleCursorAdapter(
this,
安卓.R.layout.simple_spinner_item,
custCur,
new String[] {smsDbSchema.CustomerSchema.COLUMN_NAME},
new int[] {安卓.R.id.text1}
);
qc.setDropDownViewResource(安卓.R.layout.simple_spinner_dropdown_item);
custSpn.setAdapter(qc);
Spinner prdSpn = (Spinner)findViewById(R.id.prd_spn);
Cursor prdCur = null;
try {
prdCur = mDb.query(smsDbSchema.ProductSchema.TABLE_NAME, null, null, null, null, null, null);
} catch(Exception e) {
Log.e("smsdb", e.toString());
}
prdCur.moveToFirst();
startManagingCursor(prdCur);
qc = new SimpleCursorAdapter(
this,
安卓.R.layout.simple_spinner_item,
prdCur,
new String[] {smsDbSchema.ProductSchema.COLUMN_NAME},
new int[] {安卓.R.id.text1}
);
qc.setDropDownViewResource(安卓.R.layout.simple_spinner_dropdown_item);
prdSpn.setAdapter(qc);
mDb.close();
}
public void setScreen(int resource) {
setContentView(resource);
if(resource==R.layout.inbound) {
//setup main entry screen
final Button transmit = (Button)findViewById(R.id.transmit_btn);
final Button clear = (Button)findViewById(R.id.clear_btn);
transmit.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// transmit data ////////
/////////////////////////
}
});
clear.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
//clear fields
}
});
}
}
}
# 1 楼答案
您正在将值放入内容值中
最后你写一个插入语句。所以,就我的理解而言,本质上你只在ContentValues中放了一个值,因为其他值都被覆盖了
您还可以使用DDMS拉取数据库文件,并使用SQLite浏览器打开,以确保所有实体都在数据库中
您应该尝试像这样插入每个内容值。请尝试此操作,以便在数据库中输入所有条目