-1
我已经尝试写入数据库并读取它们并将它们加载到ArrayList
,然后列表中的元素应该被添加到AutoCompleteTextView
,但它似乎显示为NullPointerException
。插入数据库和读取数据库后出现空指针异常
这是代码。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tweetPost = new Tweet();
setIssueTypeToDatabase("Accident");
setIssueTypeToDatabase("Fire");
setIssueTypeToDatabase("Local Utility Problem");
setIssueTypeToDatabase("Theft");
setIssueTypeToDatabase("Technological Problem");
postBox = (EditText) findViewById(R.id.post);
log.debug(postBox);
issue = (AutoCompleteTextView) findViewById(R.id.autocomplete_issue);
log.debug(issue);
setIssueTypeFromDatabaseToList();
adapterA = new ArrayAdapter(this,
android.R.layout.simple_list_item_1, IssueTypeList);
issue.setAdapter(adapterA);
}
private void setIssueTypeToDatabase(String issue) {
SQLiteDatabase db = issueTypeDatabase.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(IssueTypeDatabase.C_Issue, issue);
db.insertOrThrow(IssueTypeDatabase.TABLE, null, values);
}
private void setIssueTypeFromDatabaseToList() {
SQLiteDatabase db = issueTypeDatabase.getReadableDatabase();
Cursor cursor = db.query(IssueTypeDatabase.TABLE, FROM, null, null, null, null,
ORDER_BY);
startManagingCursor(cursor);
showEvents(cursor);
}
private void showEvents(Cursor cursor) {
log.debug("showEvents()");
// Stuff them all into a big string
setContentView(R.layout.database);
while (cursor.moveToNext()) {
// Could use getColumnIndexOrThrow() to get indexes
issueTypesFound = cursor.getString(1);
IssueTypeList.add(issueTypesFound);
}
cursor.close();
}
public class IssueTypeDatabase extends SQLiteOpenHelper{
// Static Final Variable database meta information
static final String DATABASE = "IssueType.db";
static final int VERSION =4;
public static final String TABLE = "IssueTypeTable";
static final String TABLE_DEPT = "Issue_Dept";
public static final String C_ID = "_id";
public static final String C_Issue = "issue";
private static final Logger log = Logger.getLogger(IssueTypeDatabase.class);
// Override constructor
public IssueTypeDatabase(Context context) {
super(context, DATABASE, null, VERSION);
log.debug("IssueTypeDatabse()");
}
// Override onCreate method
@Override
public void onCreate(SQLiteDatabase db) {
log.debug("onCreate()");
db.execSQL("CREATE TABLE " + TABLE + " (" + C_ID
+ " INTEGER PRIMARY KEY AUTOINCREMENT, " + C_Issue + " TEXT"+");");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
log.debug("onUpgrade()>>SQLiteDatabase={}",DATABASE);
// Drop old version table
db.execSQL("DROP TABLE IF EXISTS " + TABLE);
// Create New Version table
onCreate(db);
}
}
和日志:
我在这里也看到,你有一个startManagingCursor和一个cursor.close()在同一个游标上,这些不应该一起使用,我不认为。 –
Thanx,我删除了cursor.close()并将其修改了一下,它工作:) – KKGanguly