Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
搜索android sqlite数据库,将结果作为listview返回给另一个活动_Android_Sqlite_Listview_Android Intent_Android Arrayadapter - Fatal编程技术网

搜索android sqlite数据库,将结果作为listview返回给另一个活动

搜索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

我不熟悉Android编程,也不了解Sqlite。我正在进行一个项目,用户可以在填充的数据库中搜索汽车品牌名称(如法拉利),结果将显示在另一个活动中,作为数据库中具有相同品牌的所有车型的列表视图。我一直在寻找不同的方法(ArrayAdapter、Cursor、Intent),但我不确定我的方法是否正确。我总共有四项活动: CarDbAdapter.java(SqliteDatabase)包含此方法来查找汽车品牌

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;