gpt4 book ai didi

java - 获取 SQLite rowID 时出现 NullPointerException

转载 作者:行者123 更新时间:2023-12-02 05:18:30 24 4
gpt4 key购买 nike

正如标题所示,我收到了 NullPointerException ,但我不知道为什么。我已经检查了代码好几次,并在输入数据之前将数据打印到 logcat 中,看起来不错。在输入代码之前,我想让您知道我正在使用 RecyclerView(如果不是很明显的话)。

// Implement OnLongClick listener. Long Clicked items is removed from list.
@Override
public boolean onLongClick(View view) {
ViewHolder holder = (ViewHolder) view.getTag();
if (view.getId() == holder.mNameTextView.getId()) {

mDataset.remove(holder.getPosition());

Log.i("NULL POINTER", (holder.mNameTextView.getText().toString()));
String temp = sqLiteDBadapter.getRowid(holder.mNameTextView.getText().toString()); // --- It fails on this line
Long temp2 = Long.parseLong(temp);

sqLiteDBadapter.deleteScore(temp2);

// Call this method to refresh the list and display the "updated" list
notifyDataSetChanged();

Toast.makeText(sContext, "Item " + holder.mNameTextView.getText() + " has been removed from list",
Toast.LENGTH_SHORT).show();

}
return false;
}

这是 SQLiteDBadapter 的一部分:

public String getRowid(String date) {
mDbHelper = new DatabaseHelper(mCtx);
SQLiteDatabase db=mDbHelper.getReadableDatabase();

Cursor c = db.rawQuery("SELECT * from " + DATABASE_TABLE + " WHERE date = ?" , new String[] { date });
if (c.moveToFirst()){
long temp;
temp = c.getLong(c.getColumnIndex(KEY_ROWID));
rowID = String.valueOf(temp);
Log.i("----_ROW ID = ", rowID);
}else if (!c.moveToFirst())
Log.i("CURSOR ERROR", " CURSOR INDEX MOST LIKELY 0");
else
c.moveToFirst();

return rowID;
}

我在代码中将 rowID 声明为 String rowID;

正如您在这里看到的:Database SQLite Fiddle获取行的代码工作得很好。

此外,Log.i NULL POINTER 在崩溃之前打印输出:I/NULL POINTER: Nov 2, 2014 11:51:14 AM 这就是根据 Fiddle

的正确格式
11-02 12:29:30.917      419-419/com.archeryscoresmaterialdesign W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x4160f620)
11-02 12:29:30.927 419-419/com.archeryscoresmaterialdesign E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.archeryscoresmaterialdesign, PID: 419
java.lang.NullPointerException
at com.archeryscoresmaterialdesign.RecyclerViewAdapter.onLongClick(RecyclerViewAdapter.java:90)
at android.view.View.performLongClick(View.java:4476)
at android.widget.TextView.performLongClick(TextView.java:8362)
at android.view.View$CheckForLongPress.run(View.java:18451)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5171)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:837)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:653)
at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:132)
at dalvik.system.NativeStart.main(Native Method)

最佳答案

您是否正在正确创建 sqLiteDBadapter?

我想您已经创建了 SQLiteOpenHelper 的子类。您正在尝试调用对象上的方法,该方法为空。试试这个:

SQLiteDBadapter db = new SQLiteDBadapter(ApplicationContext);

现在您应该能够调用它的任何方法。当你完成阅读、写作等操作后,不要忘记关闭数据库连接。

db.close();

关于java - 获取 SQLite rowID 时出现 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26702315/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com