缺少在列表视图中显示数据的语法
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;
}
编码愉快:)
我是 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;
}
编码愉快:)