【发布时间】:2018-01-31 16:11:28
【问题描述】:
我编写了将一些值放在列表视图中的函数,但应用程序因该错误而崩溃 -
原因:java.lang.NullPointerException:尝试在空对象引用上调用接口方法“int java.util.List.size()”
这里是函数-
public void SetInList() {
{
database = UserInfo_Activity.this.openOrCreateDatabase("Runs", MODE_PRIVATE, null);
Cursor c = database.rawQuery("SELECT * FROM " +
TABLE_NAME + "", null);
try {
if (c != null) {
if (c.moveToFirst()) {
do {
String Date = c.getString(c.getColumnIndex("Date"));
int steps = c.getInt(c.getColumnIndex("Steps"));
String Time = c.getString(c.getColumnIndex("Time"));
double Distance = c.getDouble(c.getColumnIndex("Distance"));
Runs.add(Date + " " + Distance + " " + Time);
} while (c.moveToNext());
}
}
} catch (SQLiteException se) {
Log.e(getClass().getSimpleName(), se.toString());
}
ArrayAdapter <String> adapter = new ArrayAdapter<String>(UserInfo_Activity.this, android.R.layout.simple_expandable_list_item_1, Runs);
list.setAdapter(adapter);
}
错误与此行有关-list.setAdapter(adapter); 我不明白为什么
这里是整个班级-
package com.exemple.myapplication;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.ArrayAdapter;
import android.widget.ListAdapter;
import android.widget.ListView;
import java.util.ArrayList;
public class UserInfo_Activity extends AppCompatActivity {
SQLiteDatabase database;
private String TABLE_NAME = "RunningLog";
private ArrayList<String> Runs;
private ListView list;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_user_info_);
ArrayList<String> Runs = new ArrayList<String>();
list = (ListView) findViewById(R.id.listView);
database = this.openOrCreateDatabase("Runs", 0, null);
database.execSQL("CREATE TABLE IF NOT EXISTS " +
TABLE_NAME +
" (Date VARCHAR," +
" Time VARCHAR, steps INT, distance DOUBLE);");
database.execSQL("DELETE FROM " + TABLE_NAME);
SetInList();
}
public void SetInList() {
{
database = UserInfo_Activity.this.openOrCreateDatabase("Runs", MODE_PRIVATE, null);
Cursor c = database.rawQuery("SELECT * FROM " +
TABLE_NAME + "", null);
try {
if (c != null) {
if (c.moveToFirst()) {
do {
String Date = c.getString(c.getColumnIndex("Date"));
int steps = c.getInt(c.getColumnIndex("Steps"));
String Time = c.getString(c.getColumnIndex("Time"));
double Distance = c.getDouble(c.getColumnIndex("Distance"));
Runs.add(Date + " " + Distance + " " + Time);
} while (c.moveToNext());
}
}
} catch (SQLiteException se) {
Log.e(getClass().getSimpleName(), se.toString());
}
ArrayAdapter <String> adapter = new ArrayAdapter<String>(UserInfo_Activity.this, android.R.layout.simple_expandable_list_item_1, Runs);
list.setAdapter(adapter);
}
}
}
【问题讨论】: