搜索android sqlite数据库,将结果作为listview返回给另一个活动
我不熟悉Android编程,也不了解Sqlite。我正在进行一个项目,用户可以在填充的数据库中搜索汽车品牌名称(如法拉利),结果将显示在另一个活动中,作为数据库中具有相同品牌的所有车型的列表视图。我一直在寻找不同的方法(ArrayAdapter、Cursor、Intent),但我不确定我的方法是否正确。我总共有四项活动: CarDbAdapter.java(SqliteDatabase)包含此方法来查找汽车品牌搜索android sqlite数据库,将结果作为listview返回给另一个活动,android,sqlite,listview,android-intent,android-arrayadapter,Android,Sqlite,Listview,Android Intent,Android Arrayadapter,我不熟悉Android编程,也不了解Sqlite。我正在进行一个项目,用户可以在填充的数据库中搜索汽车品牌名称(如法拉利),结果将显示在另一个活动中,作为数据库中具有相同品牌的所有车型的列表视图。我一直在寻找不同的方法(ArrayAdapter、Cursor、Intent),但我不确定我的方法是否正确。我总共有四项活动: CarDbAdapter.java(SqliteDatabase)包含此方法来查找汽车品牌 public ArrayList<Car> findCar(String
public ArrayList<Car> findCar(String Car) {
String car = new String();
ArrayList<Car> car= new ArrayList<Car>();
SQLiteDatabase db = getReadableDatabase();
Cursor cursor = db.rawQuery("SELECT * FROM cars WHERE brand=?", new
String[]{car});
if (cursor.moveToFirst()) {
while (!cursor.isAfterLast()) {
Car c = new Car
(cursor.getInt(cursor.getColumnIndex("id")),cursor.getString(cursor.getColumnIndex("brand")),
cursor.getString(cursor.getColumnIndex("model")),
cursor.getString(cursor.getColumnIndex("reviews")));
car.add(c);
cursor.moveToNext();
}
}
cursor.close();
return car;
}
Car.java
public class Car{
int id = 0;
String brand = null;
String model = null;
String reviews = null;
public Car(int id, String brand, String model, String reviews) {
this.id = id;
this.brand= brand;
this.model = model;
this.reviews = reviews;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand= brand;
}
public String getModel() {
return model;
}
public void setModel(String model) {
this.model= model;
}
public String getReviews() {
return reviews;
}
public void setReviews(String reviews) {
this.reviews= reviews;
}
}
任何帮助都将不胜感激。如果有人能用我可以遵循的现有教程来指导我,那将是非常棒的。谢谢你在你的CarDbAdapter.java中,以下是前三行:
public ArrayList<Car> findCar(String Car) {
String car = new String();
ArrayList<Car> car= new ArrayList<Car>();
public ArrayList findCar(字符串车){
字符串car=新字符串();
ArrayList car=新的ArrayList();
您正在创建一个返回Car(类)类型的ArrayList的方法,然后传递一个名为“Car”的字符串(与您的Car类相同)。
在方法内部,创建一个名为“car”的空字符串,然后创建一个类型为car(class)的ArrayList,其名称与“car”相同(这将覆盖先前创建的字符串“car”)
这不仅让我们感到困惑,也让编译器感到困惑。请尝试重命名变量并再次运行应用程序
这是我如何重写您的findCar方法的建议:
public ArrayList<Car> findCar(String brand_text) {
ArrayList<Car> cars= new ArrayList<Car>();
SQLiteDatabase db = getReadableDatabase();
Cursor cursor = db.rawQuery("SELECT * FROM cars WHERE brand=?", new
String[]{brand_text});
if (cursor.moveToFirst()) {
while (!cursor.isAfterLast()) {
Car c = new Car (cursor.getInt(cursor.getColumnIndex("id")),cursor.getString(cursor.getColumnIndex("brand")),
cursor.getString(cursor.getColumnIndex("model")),
cursor.getString(cursor.getColumnIndex("reviews")));
cars.add(c);
cursor.moveToNext();
}
}
cursor.close();
return cars;
public ArrayList findCar(字符串品牌\u文本){
ArrayList cars=新的ArrayList();
SQLiteDatabase db=getReadableDatabase();
Cursor Cursor=db.rawQuery(“从品牌=?”的汽车中选择*”,新建
字符串[]{brand_text});
if(cursor.moveToFirst()){
而(!cursor.isAfterLast()){
Car c=新车(cursor.getInt(cursor.getColumnIndex(“id”)),cursor.getString(cursor.getColumnIndex(“品牌”),
cursor.getString(cursor.getColumnIndex(“model”),
cursor.getString(cursor.getColumnIndex(“reviews”);
加上(c);
cursor.moveToNext();
}
}
cursor.close();
返回车辆;
}
这样,您就可以使用“brand_text”作为您的品牌(例如,“ferrari”)的字符串值,并返回一个类别为Car的ArrayList cars
至于您的疑问,意图(也)用于将参数传递给其他活动,游标(也)用于从数据库中返回行,使用ArrayAdapter填充ListView。这不是您应该使用哪个的问题。如果您计划使用您在问题中提到的应用程序,您实际上必须使用所有这些行。这实际上帮了我很大的忙。谢谢!!
public ArrayList<Car> findCar(String Car) {
String car = new String();
ArrayList<Car> car= new ArrayList<Car>();
public ArrayList<Car> findCar(String brand_text) {
ArrayList<Car> cars= new ArrayList<Car>();
SQLiteDatabase db = getReadableDatabase();
Cursor cursor = db.rawQuery("SELECT * FROM cars WHERE brand=?", new
String[]{brand_text});
if (cursor.moveToFirst()) {
while (!cursor.isAfterLast()) {
Car c = new Car (cursor.getInt(cursor.getColumnIndex("id")),cursor.getString(cursor.getColumnIndex("brand")),
cursor.getString(cursor.getColumnIndex("model")),
cursor.getString(cursor.getColumnIndex("reviews")));
cars.add(c);
cursor.moveToNext();
}
}
cursor.close();
return cars;