Java 获取SQLite rowID时出现NullPointerException

Java 获取SQLite rowID时出现NullPointerException,java,android,sqlite,nullpointerexception,Java,Android,Sqlite,Nullpointerexception,正如标题所说,我得到了一个NullPointerException,我不知道为什么。我已经检查了几次代码,并在输入数据之前将数据打印到logcat,看起来很好。在输入代码之前,我只想让您知道我正在使用RecyclerView,如果它不明显的话 // Implement OnLongClick listener. Long Clicked items is removed from list. @Override public boolean onLongClick(View view) {

正如标题所说,我得到了一个
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声明为
字符串rowID代码中的EALER

正如您在这里看到的:获取行的代码工作得非常好

另外,
Log.i
NULL指针在输出崩溃之前打印输出:
i/NULL指针﹕ 2014年11月2日上午11:51:14
根据
小提琴

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)
在此代码内

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();
如果您只是简单地声明了它,那么您可能永远不会为rowID分配任何内容
字符串rowID字符串rowID=新字符串();它保持为空。这是可能的吗?

您是否正确地创建了sqLiteDBadapter

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

SQLiteDBadapter db = new SQLiteDBadapter(ApplicationContext);
现在,您应该能够对其调用任何方法。 在你完成了阅读、写作、写作之后。。别忘了关闭数据库连接

db.close();

抢手货我只将它声明为
private SQLiteDBadapter SQLiteDBadapter
但是我认为我不能在
RecycleServiceAdapter
内部执行
getApplicationContext()
。有办法吗?终于成功了。没有注意到上下文已经在我的RecyclerView中声明。如果我不能弄清楚下一部分,就必须开始一个新的话题。它在删除时获取id和除NullPointer以外的所有指针。无论如何,再次谢谢你。