缺少在列表视图中显示数据的语法

Missing Syntax for displaying data in listview

我是 android 世界的新手。我的代码有问题。我的列表视图没有显示 ArrayList 方法。它返回空白作为列表视图中的值。 这个问题可能是什么问题。

这是我的数据库文件,其中包含 ArrayList 执行 select 事件。这将从数据库中获取数据,然后将其显示到列表视图。

 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);
}


}

和列表视图 class,它将显示数据库中的数据。

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();
    }

}


}

您正在获取空对象异常,因为您在执行操作之前没有初始化 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<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;
}

编码愉快:)