Java 缺少用于在listview中显示数据的语法

Java 缺少用于在listview中显示数据的语法,java,android,sqlite,listview,nullreferenceexception,Java,Android,Sqlite,Listview,Nullreferenceexception,我是android世界的新手。我对代码有问题。我的listview未显示ArrayList方法。它将在listview中返回空白值。 这个问题可能有什么问题 这是我的db文件,其中包含ArrayList execute select事件。这将从数据库中获取数据,然后将其显示到listview public class UniversityFinderDB extends SQLiteOpenHelper{ private static final int DATABASE_VERSION=

我是android世界的新手。我对代码有问题。我的listview未显示ArrayList方法。它将在listview中返回空白值。 这个问题可能有什么问题

这是我的db文件,其中包含ArrayList execute select事件。这将从数据库中获取数据,然后将其显示到listview

 public class UniversityFinderDB  extends SQLiteOpenHelper{

private static final int DATABASE_VERSION= 1;
static final String DATABASE_NAME="universities.db";
private static final String TABLE_NAME="universityFinder";

private static final String COLUMN_UNIVID="univId";
private static final String COLUMN_UNIVERSITYNAME="univName";
private static final String COLUMN_SCORE="score";

SQLiteDatabase db;




private static final String TABLE_CREATE = "create table universityFinder (univId integer primary key  not null, univName varchar not null, score integer not null);";

public UniversityFinderDB(Context context) {
    super(context, DATABASE_NAME,null ,DATABASE_VERSION);
}

@Override
public void onCreate(SQLiteDatabase database) {

    database.execSQL(TABLE_CREATE);


}



public void executeEventInsert(String name, String score){
    String query="INSERT INTO universityFinder(univName, score) VALUES('"+name+"','"+score+"');";
    db.execSQL(query);
}




public ArrayList<HashMap<String,String>> executeSelectEvents(int input){
    String query="select * from "+TABLE_NAME+ " where " +COLUMN_SCORE+" >="+input;
    Cursor cursor= db.rawQuery(query,null);
    ArrayList<HashMap<String,String>> events=new ArrayList<>();
    while (cursor.moveToNext()){
        HashMap<String,String> event=new HashMap<>();

        String colUniversityId=cursor.getColumnName(0);
        String colUniversityIdValue=cursor.getString(0);
        String colUniversityName=cursor.getColumnName(1);
        String colUniversityValue=cursor.getString(1);


        event.put(colUniversityId,colUniversityIdValue);
        event.put(colUniversityName,colUniversityValue);
        events.add(event);
    }
    return events;
}


@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    String query = "DROP TABLE IF EXISTS "+TABLE_NAME;
    db.execSQL(query);
}


}
公共类UniversityFinderDB扩展SQLiteOpenHelper{
私有静态最终int数据库_VERSION=1;
静态最终字符串数据库\u NAME=“universions.db”;
私有静态最终字符串表_NAME=“universityFinder”;
私有静态最终字符串列_UNIVID=“UNIVID”;
私有静态最终字符串列\u UNIVERSITYNAME=“univName”;
私有静态最终字符串列\u SCORE=“SCORE”;
sqlitedb数据库;
private static final String TABLE_CREATE=“CREATE TABLE universityFinder(univId integer主键不为null,univName varchar不为null,score integer不为null);”;
公立大学FinderDB(上下文){
super(上下文、数据库名称、null、数据库版本);
}
@凌驾
public void onCreate(SQLiteDatabase){
execSQL(创建表);
}
public void executeEventInsert(字符串名称、字符串分数){
String query=“插入universityFinder(univName,score)值(“+name+”,“+score+”);”;
execSQL(查询);
}
公共ArrayList executeSelectEvents(int输入){
String query=“select*from”+表名+”,其中“+列分数+”>=”+输入;
Cursor Cursor=db.rawQuery(查询,空);
ArrayList事件=新建ArrayList();
while(cursor.moveToNext()){
HashMap事件=新建HashMap();
字符串colUniversityId=cursor.getColumnName(0);
字符串colUniversityIdValue=cursor.getString(0);
字符串colUniversityName=cursor.getColumnName(1);
字符串colUniversityValue=cursor.getString(1);
事件。put(colUniversityId,coluniversitydvalue);
事件.put(colUniversityName,colUniversityValue);
事件。添加(事件);
}
返回事件;
}
@凌驾
public void onUpgrade(SQLiteDatabase db,int-oldVersion,int-newVersion){
String query=“如果存在,则删除表格”+表格名称;
execSQL(查询);
}
}
以及listview类,它将在其中显示数据库中的数据

public class ListviewFinderUniversities extends AppCompatActivity {


UniversityFinderDB myDB;
ArrayList<HashMap<String, String>> eventData;
ListView finderListview;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_listview_finder_universities);


     myDB = new UniversityFinderDB(this);

    finderListview = (ListView) findViewById(R.id.finderListView);


    myDB.executeEventInsert("UCI","101");

    myDB.executeEventInsert("UeI","100");

    myDB.executeEventInsert("UgI","105");

    myDB.executeEventInsert("UjI","107");

    myDB.executeEventInsert("ewI","109");

    loadUnivFromDb();

}

private void createUnivAdapter(){
    String from[]={"univId","univName"};
    int to[] = {R.id.eventId, R.id.evenLabel};
    SimpleAdapter adapter = new SimpleAdapter(getApplicationContext(), eventData, R.layout.uni_item_finder, from, to);
    finderListview.setAdapter(adapter);
}

private void loadUnivFromDb() {
    int gre = getIntent().getIntExtra("Gre",0);

    ArrayList<HashMap<String, String>> data= myDB.executeSelectEvents(gre);
    if(data.size()>0){
        eventData=data;
        createUnivAdapter();
    }else {
        Toast.makeText(getApplicationContext(),"NoEvents",Toast.LENGTH_SHORT).show();
    }

}


}
公共类ListViewFinder活动{
大学金融数据库myDB;
ArrayList事件数据;
ListView finderListview;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u listview\u finder\u University);
myDB=新大学FinderDB(本);
finderListview=(ListView)findViewById(R.id.finderListview);
myDB.executeEventInsert(“UCI”、“101”);
myDB.executeEventInsert(“UeI”、“100”);
myDB.executeEventInsert(“UgI”、“105”);
myDB.executeEventInsert(“UjI”、“107”);
myDB.executeEventInsert(“ewI”、“109”);
loadUnivFromDb();
}
私有void CreateUnivaAdapter(){
[]中的字符串={“univId”,“univName”};
int到[]={R.id.eventId,R.id.evenLabel};
SimpleAdapter=new SimpleAdapter(getApplicationContext(),eventData,R.layout.uni_item_finder,from,to);
setAdapter(适配器);
}
私有void loadUnivFromDb(){
int gre=getIntent().getIntExtra(“gre”,0);
ArrayList数据=myDB.executeSelectEvents(gre);
如果(data.size()>0){
事件数据=数据;
createUnivaAdapter();
}否则{
Toast.makeText(getApplicationContext(),“NoEvents”,Toast.LENGTH\u SHORT.show();
}
}
}

由于在执行操作之前未初始化
SQLiteDatabase
,因此将出现空对象异常

只需要替换你的方法

public void executeEventInsert(String name, String score){
     //For write data to your database
     SQLiteDatabase db = this.getWritableDatabase();
    String query="INSERT INTO universityFinder(univName, score) VALUES('"+name+"','"+score+"');";
    db.execSQL(query);
}

public ArrayList executeSelectEvents(int输入){
String query=“select*from”+表名+”,其中“+列分数+”>=”+输入;
SQLiteDatabase db=this.getReadableDatabase();
Cursor Cursor=db.rawQuery(查询,空);
ArrayList事件=新建ArrayList();
while(cursor.moveToNext()){
HashMap事件=新建HashMap();
字符串colUniversityId=cursor.getColumnName(0);
字符串colUniversityIdValue=cursor.getString(0);
字符串colUniversityName=cursor.getColumnName(1);
字符串colUniversityValue=cursor.getString(1);
事件。put(colUniversityId,coluniversitydvalue);
事件.put(colUniversityName,colUniversityValue);
事件。添加(事件);
}
返回事件;
}
快乐编码:)

您的
SQLiteDatabase db
NULL
检查本教程
public ArrayList<HashMap<String,String>> executeSelectEvents(int input){
    String query="select * from "+TABLE_NAME+ " where " +COLUMN_SCORE+" >="+input;
    SQLiteDatabase db = this.getReadableDatabase();
    Cursor cursor= db.rawQuery(query,null);
    ArrayList<HashMap<String,String>> events=new ArrayList<>();
    while (cursor.moveToNext()){
        HashMap<String,String> event=new HashMap<>();

        String colUniversityId=cursor.getColumnName(0);
        String colUniversityIdValue=cursor.getString(0);
        String colUniversityName=cursor.getColumnName(1);
        String colUniversityValue=cursor.getString(1);


        event.put(colUniversityId,colUniversityIdValue);
        event.put(colUniversityName,colUniversityValue);
        events.add(event);
    }
    return events;
}