Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.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
Java 如何在recyclerview中仅显示具有特定值的数据_Java_Android_Sqlite_Sorting_Android Recyclerview - Fatal编程技术网

Java 如何在recyclerview中仅显示具有特定值的数据

Java 如何在recyclerview中仅显示具有特定值的数据,java,android,sqlite,sorting,android-recyclerview,Java,Android,Sqlite,Sorting,Android Recyclerview,我试图使用SQLite数据库制作一些类似于日志的东西来存储汽车加油,但我不知道如何将可见数据仅限于分配给特定汽车ID的加油 过程如下所示:(我们假设数据库中有数据) 在我点击一辆特定的汽车后,我会被重定向到汽车档案活动,在那里我可以看到关于那辆汽车的更多信息。 然后,在选择了“记录加油”选项后,我将被重定向到recyclerview,查看我之前选择的汽车加油记录 问题: 在从cars profile输入列表后,我将从表“燃料”中获取每一行,但我只希望看到分配给这辆车的加油 以下是我在这个问题上的

我试图使用SQLite数据库制作一些类似于日志的东西来存储汽车加油,但我不知道如何将可见数据仅限于分配给特定汽车ID的加油

过程如下所示:(我们假设数据库中有数据)

在我点击一辆特定的汽车后,我会被重定向到汽车档案活动,在那里我可以看到关于那辆汽车的更多信息。 然后,在选择了“记录加油”选项后,我将被重定向到recyclerview,查看我之前选择的汽车加油记录

问题:

在从cars profile输入列表后,我将从表“燃料”中获取每一行,但我只希望看到分配给这辆车的加油

以下是我在这个问题上的3个重要活动:

第一个是登记汽车的清单

第二个是汽车简介

第三个是加油清单

(加油清单上每一项末尾的数字都是我所来自并添加数据的汽车ID)

DatabaseHelper.java

    public class DatabaseHelper extends SQLiteOpenHelper {

    private Context context;

    private static final String DATABASE_NAME = "CarsList.db";
    private static final int  DATABASE_VERSION = 1;

    private static final String TABLE_CARS = "cars";
    private static final String COLUMN_CAR_ID = "_id";
    private static final String COLUMN_BRAND = "car_brand";
    private static final String COLUMN_MODEL = "car_model";
    private static final String COLUMN_YEAR_MADE = "car_year_made";

    private static final String TABLE_FUELS = "fuels";
    private static final String COLUMN_FUEL_ID = "fuel_id";
    private static final String COLUMN_STATION_NAME = "station_name";
    private static final String COLUMN_FUEL_TYPE = "fuel_type";
    private static final String COLUMN_FUEL_AMOUNT = "fuel_amount";
    private static final String COLUMN_FUEL_COST = "fuel_cost";
    private static final String COLUMN_MILEAGE = "mileage";
    private static final String COLUMN_FUEL_DATE = "fuel_date";
    private static final String COLUMN_FUELED_CAR_ID = "fueled_car_id";

    public DatabaseHelper(@Nullable Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
        this.context = context;
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        String query1 =
                "CREATE TABLE " + TABLE_CARS +
                        " (" + COLUMN_CAR_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
                        COLUMN_BRAND + " TEXT, " +
                        COLUMN_MODEL + " TEXT, " +
                        COLUMN_YEAR_MADE + " INTEGER);";
        String query2 =
                "CREATE TABLE " + TABLE_FUELS +
                        " (" + COLUMN_FUEL_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
                        COLUMN_STATION_NAME + " TEXT, " +
                        COLUMN_FUEL_TYPE + " TEXT, " +
                        COLUMN_FUEL_AMOUNT + " INTEGER, " +
                        COLUMN_FUEL_COST + " INTEGER, " +
                        COLUMN_MILEAGE + " INTEGER, " +
                        COLUMN_FUEL_DATE + " TEXT, " +
                        COLUMN_FUELED_CAR_ID + " INTEGER REFERENCES "+ COLUMN_CAR_ID + ");";
        db.execSQL(query1);
        db.execSQL(query2);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS " +  TABLE_CARS);
        db.execSQL("DROP TABLE IF EXISTS " +  TABLE_FUELS);
        onCreate(db);
    }

    void addCar(String brand,
                String model,
                int yearMade
    ) {
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues cv = new ContentValues();

        cv.put(COLUMN_BRAND, brand);
        cv.put(COLUMN_MODEL, model);
        cv.put(COLUMN_YEAR_MADE, yearMade);
        long result = db.insert(TABLE_CARS, null, cv);
        if (result == -1) {
            Toast.makeText(context, "Failed adding new car.", Toast.LENGTH_SHORT).show();
        } else {
            Toast.makeText(context, "Added a new car!", Toast.LENGTH_SHORT).show();
        }
    }

    void addFuel(String stationName,
                 String fuelType,
                 int fuelAmount,
                 int fuelCost,
                 int mileage,
                 String fuelDate,
                 String fueledCarId
    ) {
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues cv = new ContentValues();

        cv.put(COLUMN_STATION_NAME, stationName);
        cv.put(COLUMN_FUEL_TYPE, fuelType);
        cv.put(COLUMN_FUEL_AMOUNT, fuelAmount);
        cv.put(COLUMN_FUEL_COST, fuelCost);
        cv.put(COLUMN_MILEAGE, mileage);
        cv.put(COLUMN_FUEL_DATE, fuelDate);
        cv.put(COLUMN_FUELED_CAR_ID, fueledCarId);
        long result = db.insert(TABLE_FUELS, null, cv);
        if (result == -1) {
            Toast.makeText(context, "Failed adding new refueling.", Toast.LENGTH_SHORT).show();
        } else {
            Toast.makeText(context, "Added a new refueling!", Toast.LENGTH_SHORT).show();
        }
    }

    @SuppressLint("Recycle")
    Cursor readAllCars() {
        String query = "SELECT * FROM " + TABLE_CARS;
        SQLiteDatabase db = this.getReadableDatabase();

        Cursor cursor = null;
        if(db != null) {
            cursor = db.rawQuery(query, null);
        }
        return cursor;
    }

    @SuppressLint("Recycle")
    Cursor readAllFuels() {
        String query = "SELECT * FROM " + TABLE_FUELS;
        SQLiteDatabase db = this.getReadableDatabase();

        Cursor cursor = null;
        if(db != null) {
            cursor = db.rawQuery(query, null);
        }
        return cursor;
    }
}
    public class RecyclerFuelAdapter extends RecyclerView.Adapter<RecyclerFuelAdapter.MyViewHolder> {

    private ArrayList<String> fuelIds, stationNames, fuelTypes, fuelAmounts, fuelCosts, mileages, fuelDates, fueledCarIds;
    private Context context;
    public RecyclerViewClickListener listener;

    public RecyclerFuelAdapter(Context context,
                               ArrayList<String> fuelIds,
                               ArrayList<String> stationNames,
                               ArrayList<String> fuelTypes,
                               ArrayList<String> fuelAmounts,
                               ArrayList<String> fuelCosts,
                               ArrayList<String> mileages,
                               ArrayList<String> fuelDates,
                               ArrayList<String> fueledCarIds,
                               RecyclerViewClickListener listener) {
        this.fuelIds = fuelIds;
        this.stationNames = stationNames;
        this.fuelTypes = fuelTypes;
        this.fuelAmounts = fuelAmounts;
        this.fuelCosts = fuelCosts;
        this.mileages = mileages;
        this.fuelDates = fuelDates;
        this.fueledCarIds = fueledCarIds;
        this.context = context;
        this.listener = listener;
    }

    @NonNull
    @Override
    public RecyclerFuelAdapter.MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        LayoutInflater inflater = LayoutInflater.from(context);
        View fuelView = inflater.inflate(R.layout.list_fuel, parent, false);
        return new MyViewHolder(fuelView);
    }

    @Override
    public void onBindViewHolder(@NonNull RecyclerFuelAdapter.MyViewHolder holder, int position) {

        String $fuelAmount = fuelAmounts.get(position) + "L";
        String $fuelCost = fuelCosts.get(position) + "$";

        holder.fuelIdTv.setText(String.valueOf(fuelIds.get(position)));
        holder.fuelAmountTv.setText($fuelAmount);
        holder.fuelCostTv.setText($fuelCost);
        holder.fuelDateTv.setText(String.valueOf(fuelDates.get(position)));
        holder.fueledCarTv.setText(String.valueOf(fueledCarIds.get(position)));
    }

    @Override
    public int getItemCount() {
        return fuelIds.size();
    }

    public interface RecyclerViewClickListener {
        void onClick(View v, int position);
    }

    public class MyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {

        private TextView fuelIdTv, fuelAmountTv, fuelCostTv, fuelDateTv, fueledCarTv;

        public MyViewHolder(@NonNull View view) {
            super(view);
            fuelIdTv = view.findViewById(R.id.fuelIdTv);
            fuelAmountTv = view.findViewById(R.id.fuelAmountTv);
            fuelCostTv = view.findViewById(R.id.fuelCostTv);
            fuelDateTv = view.findViewById(R.id.fuelDateTv);
            fueledCarTv = view.findViewById(R.id.fueledCarTv);

            view.setOnClickListener(this);
        }

        @Override
        public void onClick(View v) {
            listener.onClick(v, getAdapterPosition());
        }
    }
}
    public class FuelActivity extends AppCompatActivity {


    public static final String COLUMN_CAR_ID = "_id";
    private DatabaseHelper myDB;
    private RecyclerFuelAdapter.RecyclerViewClickListener listener;
    private ArrayList<String> fuelIds, stationNames, fuelTypes, fuelAmounts, fuelCosts, mileages, fuelDates, fueledCarIds;
    private RecyclerView recyclerView;
    private RecyclerFuelAdapter RecyclerFuelAdapter;
    private Button goToAddFuelBtn;

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

        recyclerView = findViewById(R.id.fuelRecycler);
        goToAddFuelBtn = findViewById(R.id.goToAddFuelBtn);

        Intent intent1 = getIntent();
        String value = intent1.getStringExtra(ProfileActivity.COLUMN_CAR_ID);

        goToAddFuelBtn.setOnClickListener(v -> {

            Intent intent4 = new Intent(getApplicationContext(), AddFuelActivity.class);
            intent4.putExtra(COLUMN_CAR_ID, value);
            startActivity(intent4);
        });

        myDB = new DatabaseHelper(FuelActivity.this);
        fuelIds = new ArrayList<>();
        stationNames = new ArrayList<>();
        fuelTypes = new ArrayList<>();
        fuelAmounts = new ArrayList<>();
        fuelCosts = new ArrayList<>();
        mileages = new ArrayList<>();
        fuelDates = new ArrayList<>();
        fueledCarIds = new ArrayList<>();

        storeFuelsInArrays();
        createAdapter();
    }

    @Override
    public void onBackPressed()
    {
        super.onBackPressed();
        startActivity(new Intent(FuelActivity.this, MainActivity.class));
        finish();

    }
    private void createAdapter() {
        setOnClickListener();
        RecyclerFuelAdapter = new RecyclerFuelAdapter(FuelActivity.this, fuelIds, stationNames, fuelTypes, fuelAmounts, fuelCosts, mileages, fuelDates, fueledCarIds,  listener);
        recyclerView.setAdapter(RecyclerFuelAdapter);
        LinearLayoutManager layoutManager = new LinearLayoutManager(FuelActivity.this);
        recyclerView.setLayoutManager(layoutManager);
    }

    private void setOnClickListener() {
        listener = (v, position) -> {
            Toast.makeText(getApplicationContext(), "clicked on " + fuelIds.get(position), Toast.LENGTH_SHORT).show();
        };
    }




    private void storeFuelsInArrays() {
        Cursor cursor = myDB.readAllFuels();
        if (cursor.getCount() == 0) {
            Toast.makeText(this, "No data to be displayed.", Toast.LENGTH_SHORT).show();
        } else {
            while (cursor.moveToNext()) {
                fuelIds.add(cursor.getString(cursor.getColumnIndex("fuel_id")));
                stationNames.add(cursor.getString(cursor.getColumnIndex("station_name")));
                fuelTypes.add(cursor.getString(cursor.getColumnIndex("fuel_type")));
                fuelAmounts.add(cursor.getString(cursor.getColumnIndex("fuel_amount")));
                fuelCosts.add(cursor.getString(cursor.getColumnIndex("fuel_cost")));
                mileages.add(cursor.getString(cursor.getColumnIndex("mileage")));
                fuelDates.add(cursor.getString(cursor.getColumnIndex("fuel_date")));
                fueledCarIds.add(cursor.getString(cursor.getColumnIndex("fueled_car_id")));
            }
        }
    }
 }
    public class ProfileActivity extends AppCompatActivity {

    public static final String COLUMN_CAR_ID = "_id";
    private TextView myCarID, myCarBrand, myCarModel, myCarYear;
    private Button goToFuelList, goToServiceList;


    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.profile_activity);

        myCarID = findViewById(R.id.myCarID);
        myCarBrand = findViewById(R.id.myCarBrand);
        myCarModel = findViewById(R.id.myCarModel);
        myCarYear = findViewById(R.id.myCarYear);
        goToFuelList = findViewById(R.id.goToFuelList);
        goToServiceList = findViewById(R.id.goToServiceList);

        myCarID.setText(getCarsData(0));
        myCarBrand.setText(getCarsData(1));
        myCarModel.setText(getCarsData(2));
        myCarYear.setText(getCarsData(3));

        Intent intent = getIntent();
        String value = intent.getStringExtra(MainActivity.COLUMN_CAR_ID);

        goToFuelList.setOnClickListener(v -> {
            Intent intent1 = new Intent(getApplicationContext(), FuelActivity.class);
            intent1.putExtra(COLUMN_CAR_ID, value);
            startActivity(intent1);
        });
    }

        @SuppressLint("Recycle")
        private String getCarsData(int option) {
            SQLiteDatabase db = this.openOrCreateDatabase("CarsList.db", Context.MODE_PRIVATE, null);
            Cursor cursor;
            if(db != null) {
                Intent intent = getIntent();
                String value = intent.getStringExtra(MainActivity.COLUMN_CAR_ID);
                cursor = db.rawQuery("SELECT _id,car_brand,car_model,car_year_made FROM cars WHERE _id = " + value, null);
                if (cursor.getCount() == 0) {
                    Toast.makeText(getApplicationContext(), "no data", Toast.LENGTH_SHORT).show();
                }
                StringBuilder buffer = new StringBuilder();
                while (cursor.moveToNext()) {
                    switch (option) {
                        case 0: buffer.append(cursor.getString(0));
                        break;
                        case 1: buffer.append(cursor.getString(1));
                        break;
                        case 2: buffer.append(cursor.getString(2));
                        break;
                        case 3: buffer.append(cursor.getString(3));
                        break;
                    }
                }
                return buffer.toString();
            }
            return null;
        }
    }
private void storeFuelsInArrays() {
    Cursor cursor = myDB.readAllFuels();
    Intent intent1 = getIntent();
    String checkedValue = intent1.getStringExtra(ProfileActivity.COLUMN_CAR_ID);
    
    if (cursor.getCount() == 0) {
        Toast.makeText(this, "No data to be displayed.", Toast.LENGTH_SHORT).show();
    } else {
        while (cursor.moveToNext()) {
            String value = cursor.getString(cursor.getColumnIndex("fueled_car_id"));
            if (value.equals(checkedValue)) {
                fuelIds.add(cursor.getString(cursor.getColumnIndex("fuel_id")));
                stationNames.add(cursor.getString(cursor.getColumnIndex("station_name")));
                fuelTypes.add(cursor.getString(cursor.getColumnIndex("fuel_type")));
                fuelAmounts.add(cursor.getString(cursor.getColumnIndex("fuel_amount")));
                fuelCosts.add(cursor.getString(cursor.getColumnIndex("fuel_cost")));
                mileages.add(cursor.getString(cursor.getColumnIndex("mileage")));
                fuelDates.add(cursor.getString(cursor.getColumnIndex("fuel_date")));
                fueledCarIds.add(cursor.getString(cursor.getColumnIndex("fueled_car_id")));
            }
        }
    }
}
RecyclerFuelAdapter.java

    public class DatabaseHelper extends SQLiteOpenHelper {

    private Context context;

    private static final String DATABASE_NAME = "CarsList.db";
    private static final int  DATABASE_VERSION = 1;

    private static final String TABLE_CARS = "cars";
    private static final String COLUMN_CAR_ID = "_id";
    private static final String COLUMN_BRAND = "car_brand";
    private static final String COLUMN_MODEL = "car_model";
    private static final String COLUMN_YEAR_MADE = "car_year_made";

    private static final String TABLE_FUELS = "fuels";
    private static final String COLUMN_FUEL_ID = "fuel_id";
    private static final String COLUMN_STATION_NAME = "station_name";
    private static final String COLUMN_FUEL_TYPE = "fuel_type";
    private static final String COLUMN_FUEL_AMOUNT = "fuel_amount";
    private static final String COLUMN_FUEL_COST = "fuel_cost";
    private static final String COLUMN_MILEAGE = "mileage";
    private static final String COLUMN_FUEL_DATE = "fuel_date";
    private static final String COLUMN_FUELED_CAR_ID = "fueled_car_id";

    public DatabaseHelper(@Nullable Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
        this.context = context;
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        String query1 =
                "CREATE TABLE " + TABLE_CARS +
                        " (" + COLUMN_CAR_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
                        COLUMN_BRAND + " TEXT, " +
                        COLUMN_MODEL + " TEXT, " +
                        COLUMN_YEAR_MADE + " INTEGER);";
        String query2 =
                "CREATE TABLE " + TABLE_FUELS +
                        " (" + COLUMN_FUEL_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
                        COLUMN_STATION_NAME + " TEXT, " +
                        COLUMN_FUEL_TYPE + " TEXT, " +
                        COLUMN_FUEL_AMOUNT + " INTEGER, " +
                        COLUMN_FUEL_COST + " INTEGER, " +
                        COLUMN_MILEAGE + " INTEGER, " +
                        COLUMN_FUEL_DATE + " TEXT, " +
                        COLUMN_FUELED_CAR_ID + " INTEGER REFERENCES "+ COLUMN_CAR_ID + ");";
        db.execSQL(query1);
        db.execSQL(query2);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS " +  TABLE_CARS);
        db.execSQL("DROP TABLE IF EXISTS " +  TABLE_FUELS);
        onCreate(db);
    }

    void addCar(String brand,
                String model,
                int yearMade
    ) {
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues cv = new ContentValues();

        cv.put(COLUMN_BRAND, brand);
        cv.put(COLUMN_MODEL, model);
        cv.put(COLUMN_YEAR_MADE, yearMade);
        long result = db.insert(TABLE_CARS, null, cv);
        if (result == -1) {
            Toast.makeText(context, "Failed adding new car.", Toast.LENGTH_SHORT).show();
        } else {
            Toast.makeText(context, "Added a new car!", Toast.LENGTH_SHORT).show();
        }
    }

    void addFuel(String stationName,
                 String fuelType,
                 int fuelAmount,
                 int fuelCost,
                 int mileage,
                 String fuelDate,
                 String fueledCarId
    ) {
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues cv = new ContentValues();

        cv.put(COLUMN_STATION_NAME, stationName);
        cv.put(COLUMN_FUEL_TYPE, fuelType);
        cv.put(COLUMN_FUEL_AMOUNT, fuelAmount);
        cv.put(COLUMN_FUEL_COST, fuelCost);
        cv.put(COLUMN_MILEAGE, mileage);
        cv.put(COLUMN_FUEL_DATE, fuelDate);
        cv.put(COLUMN_FUELED_CAR_ID, fueledCarId);
        long result = db.insert(TABLE_FUELS, null, cv);
        if (result == -1) {
            Toast.makeText(context, "Failed adding new refueling.", Toast.LENGTH_SHORT).show();
        } else {
            Toast.makeText(context, "Added a new refueling!", Toast.LENGTH_SHORT).show();
        }
    }

    @SuppressLint("Recycle")
    Cursor readAllCars() {
        String query = "SELECT * FROM " + TABLE_CARS;
        SQLiteDatabase db = this.getReadableDatabase();

        Cursor cursor = null;
        if(db != null) {
            cursor = db.rawQuery(query, null);
        }
        return cursor;
    }

    @SuppressLint("Recycle")
    Cursor readAllFuels() {
        String query = "SELECT * FROM " + TABLE_FUELS;
        SQLiteDatabase db = this.getReadableDatabase();

        Cursor cursor = null;
        if(db != null) {
            cursor = db.rawQuery(query, null);
        }
        return cursor;
    }
}
    public class RecyclerFuelAdapter extends RecyclerView.Adapter<RecyclerFuelAdapter.MyViewHolder> {

    private ArrayList<String> fuelIds, stationNames, fuelTypes, fuelAmounts, fuelCosts, mileages, fuelDates, fueledCarIds;
    private Context context;
    public RecyclerViewClickListener listener;

    public RecyclerFuelAdapter(Context context,
                               ArrayList<String> fuelIds,
                               ArrayList<String> stationNames,
                               ArrayList<String> fuelTypes,
                               ArrayList<String> fuelAmounts,
                               ArrayList<String> fuelCosts,
                               ArrayList<String> mileages,
                               ArrayList<String> fuelDates,
                               ArrayList<String> fueledCarIds,
                               RecyclerViewClickListener listener) {
        this.fuelIds = fuelIds;
        this.stationNames = stationNames;
        this.fuelTypes = fuelTypes;
        this.fuelAmounts = fuelAmounts;
        this.fuelCosts = fuelCosts;
        this.mileages = mileages;
        this.fuelDates = fuelDates;
        this.fueledCarIds = fueledCarIds;
        this.context = context;
        this.listener = listener;
    }

    @NonNull
    @Override
    public RecyclerFuelAdapter.MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        LayoutInflater inflater = LayoutInflater.from(context);
        View fuelView = inflater.inflate(R.layout.list_fuel, parent, false);
        return new MyViewHolder(fuelView);
    }

    @Override
    public void onBindViewHolder(@NonNull RecyclerFuelAdapter.MyViewHolder holder, int position) {

        String $fuelAmount = fuelAmounts.get(position) + "L";
        String $fuelCost = fuelCosts.get(position) + "$";

        holder.fuelIdTv.setText(String.valueOf(fuelIds.get(position)));
        holder.fuelAmountTv.setText($fuelAmount);
        holder.fuelCostTv.setText($fuelCost);
        holder.fuelDateTv.setText(String.valueOf(fuelDates.get(position)));
        holder.fueledCarTv.setText(String.valueOf(fueledCarIds.get(position)));
    }

    @Override
    public int getItemCount() {
        return fuelIds.size();
    }

    public interface RecyclerViewClickListener {
        void onClick(View v, int position);
    }

    public class MyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {

        private TextView fuelIdTv, fuelAmountTv, fuelCostTv, fuelDateTv, fueledCarTv;

        public MyViewHolder(@NonNull View view) {
            super(view);
            fuelIdTv = view.findViewById(R.id.fuelIdTv);
            fuelAmountTv = view.findViewById(R.id.fuelAmountTv);
            fuelCostTv = view.findViewById(R.id.fuelCostTv);
            fuelDateTv = view.findViewById(R.id.fuelDateTv);
            fueledCarTv = view.findViewById(R.id.fueledCarTv);

            view.setOnClickListener(this);
        }

        @Override
        public void onClick(View v) {
            listener.onClick(v, getAdapterPosition());
        }
    }
}
    public class FuelActivity extends AppCompatActivity {


    public static final String COLUMN_CAR_ID = "_id";
    private DatabaseHelper myDB;
    private RecyclerFuelAdapter.RecyclerViewClickListener listener;
    private ArrayList<String> fuelIds, stationNames, fuelTypes, fuelAmounts, fuelCosts, mileages, fuelDates, fueledCarIds;
    private RecyclerView recyclerView;
    private RecyclerFuelAdapter RecyclerFuelAdapter;
    private Button goToAddFuelBtn;

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

        recyclerView = findViewById(R.id.fuelRecycler);
        goToAddFuelBtn = findViewById(R.id.goToAddFuelBtn);

        Intent intent1 = getIntent();
        String value = intent1.getStringExtra(ProfileActivity.COLUMN_CAR_ID);

        goToAddFuelBtn.setOnClickListener(v -> {

            Intent intent4 = new Intent(getApplicationContext(), AddFuelActivity.class);
            intent4.putExtra(COLUMN_CAR_ID, value);
            startActivity(intent4);
        });

        myDB = new DatabaseHelper(FuelActivity.this);
        fuelIds = new ArrayList<>();
        stationNames = new ArrayList<>();
        fuelTypes = new ArrayList<>();
        fuelAmounts = new ArrayList<>();
        fuelCosts = new ArrayList<>();
        mileages = new ArrayList<>();
        fuelDates = new ArrayList<>();
        fueledCarIds = new ArrayList<>();

        storeFuelsInArrays();
        createAdapter();
    }

    @Override
    public void onBackPressed()
    {
        super.onBackPressed();
        startActivity(new Intent(FuelActivity.this, MainActivity.class));
        finish();

    }
    private void createAdapter() {
        setOnClickListener();
        RecyclerFuelAdapter = new RecyclerFuelAdapter(FuelActivity.this, fuelIds, stationNames, fuelTypes, fuelAmounts, fuelCosts, mileages, fuelDates, fueledCarIds,  listener);
        recyclerView.setAdapter(RecyclerFuelAdapter);
        LinearLayoutManager layoutManager = new LinearLayoutManager(FuelActivity.this);
        recyclerView.setLayoutManager(layoutManager);
    }

    private void setOnClickListener() {
        listener = (v, position) -> {
            Toast.makeText(getApplicationContext(), "clicked on " + fuelIds.get(position), Toast.LENGTH_SHORT).show();
        };
    }




    private void storeFuelsInArrays() {
        Cursor cursor = myDB.readAllFuels();
        if (cursor.getCount() == 0) {
            Toast.makeText(this, "No data to be displayed.", Toast.LENGTH_SHORT).show();
        } else {
            while (cursor.moveToNext()) {
                fuelIds.add(cursor.getString(cursor.getColumnIndex("fuel_id")));
                stationNames.add(cursor.getString(cursor.getColumnIndex("station_name")));
                fuelTypes.add(cursor.getString(cursor.getColumnIndex("fuel_type")));
                fuelAmounts.add(cursor.getString(cursor.getColumnIndex("fuel_amount")));
                fuelCosts.add(cursor.getString(cursor.getColumnIndex("fuel_cost")));
                mileages.add(cursor.getString(cursor.getColumnIndex("mileage")));
                fuelDates.add(cursor.getString(cursor.getColumnIndex("fuel_date")));
                fueledCarIds.add(cursor.getString(cursor.getColumnIndex("fueled_car_id")));
            }
        }
    }
 }
    public class ProfileActivity extends AppCompatActivity {

    public static final String COLUMN_CAR_ID = "_id";
    private TextView myCarID, myCarBrand, myCarModel, myCarYear;
    private Button goToFuelList, goToServiceList;


    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.profile_activity);

        myCarID = findViewById(R.id.myCarID);
        myCarBrand = findViewById(R.id.myCarBrand);
        myCarModel = findViewById(R.id.myCarModel);
        myCarYear = findViewById(R.id.myCarYear);
        goToFuelList = findViewById(R.id.goToFuelList);
        goToServiceList = findViewById(R.id.goToServiceList);

        myCarID.setText(getCarsData(0));
        myCarBrand.setText(getCarsData(1));
        myCarModel.setText(getCarsData(2));
        myCarYear.setText(getCarsData(3));

        Intent intent = getIntent();
        String value = intent.getStringExtra(MainActivity.COLUMN_CAR_ID);

        goToFuelList.setOnClickListener(v -> {
            Intent intent1 = new Intent(getApplicationContext(), FuelActivity.class);
            intent1.putExtra(COLUMN_CAR_ID, value);
            startActivity(intent1);
        });
    }

        @SuppressLint("Recycle")
        private String getCarsData(int option) {
            SQLiteDatabase db = this.openOrCreateDatabase("CarsList.db", Context.MODE_PRIVATE, null);
            Cursor cursor;
            if(db != null) {
                Intent intent = getIntent();
                String value = intent.getStringExtra(MainActivity.COLUMN_CAR_ID);
                cursor = db.rawQuery("SELECT _id,car_brand,car_model,car_year_made FROM cars WHERE _id = " + value, null);
                if (cursor.getCount() == 0) {
                    Toast.makeText(getApplicationContext(), "no data", Toast.LENGTH_SHORT).show();
                }
                StringBuilder buffer = new StringBuilder();
                while (cursor.moveToNext()) {
                    switch (option) {
                        case 0: buffer.append(cursor.getString(0));
                        break;
                        case 1: buffer.append(cursor.getString(1));
                        break;
                        case 2: buffer.append(cursor.getString(2));
                        break;
                        case 3: buffer.append(cursor.getString(3));
                        break;
                    }
                }
                return buffer.toString();
            }
            return null;
        }
    }
private void storeFuelsInArrays() {
    Cursor cursor = myDB.readAllFuels();
    Intent intent1 = getIntent();
    String checkedValue = intent1.getStringExtra(ProfileActivity.COLUMN_CAR_ID);
    
    if (cursor.getCount() == 0) {
        Toast.makeText(this, "No data to be displayed.", Toast.LENGTH_SHORT).show();
    } else {
        while (cursor.moveToNext()) {
            String value = cursor.getString(cursor.getColumnIndex("fueled_car_id"));
            if (value.equals(checkedValue)) {
                fuelIds.add(cursor.getString(cursor.getColumnIndex("fuel_id")));
                stationNames.add(cursor.getString(cursor.getColumnIndex("station_name")));
                fuelTypes.add(cursor.getString(cursor.getColumnIndex("fuel_type")));
                fuelAmounts.add(cursor.getString(cursor.getColumnIndex("fuel_amount")));
                fuelCosts.add(cursor.getString(cursor.getColumnIndex("fuel_cost")));
                mileages.add(cursor.getString(cursor.getColumnIndex("mileage")));
                fuelDates.add(cursor.getString(cursor.getColumnIndex("fuel_date")));
                fueledCarIds.add(cursor.getString(cursor.getColumnIndex("fueled_car_id")));
            }
        }
    }
}

经过3天的尝试,我自己已经解决了这个问题,所以如果有人会遇到同样的问题,那就是显示依赖于另一个recyclerview的值的recyclerview数据,这是一种适合我的方法,即使它可能不是完美的

我只是在intent中传递了存储SQLite表中的“_id”列的值,并在向ArrayList添加数据时进行了检查

FuelActivity.java

    public class DatabaseHelper extends SQLiteOpenHelper {

    private Context context;

    private static final String DATABASE_NAME = "CarsList.db";
    private static final int  DATABASE_VERSION = 1;

    private static final String TABLE_CARS = "cars";
    private static final String COLUMN_CAR_ID = "_id";
    private static final String COLUMN_BRAND = "car_brand";
    private static final String COLUMN_MODEL = "car_model";
    private static final String COLUMN_YEAR_MADE = "car_year_made";

    private static final String TABLE_FUELS = "fuels";
    private static final String COLUMN_FUEL_ID = "fuel_id";
    private static final String COLUMN_STATION_NAME = "station_name";
    private static final String COLUMN_FUEL_TYPE = "fuel_type";
    private static final String COLUMN_FUEL_AMOUNT = "fuel_amount";
    private static final String COLUMN_FUEL_COST = "fuel_cost";
    private static final String COLUMN_MILEAGE = "mileage";
    private static final String COLUMN_FUEL_DATE = "fuel_date";
    private static final String COLUMN_FUELED_CAR_ID = "fueled_car_id";

    public DatabaseHelper(@Nullable Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
        this.context = context;
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        String query1 =
                "CREATE TABLE " + TABLE_CARS +
                        " (" + COLUMN_CAR_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
                        COLUMN_BRAND + " TEXT, " +
                        COLUMN_MODEL + " TEXT, " +
                        COLUMN_YEAR_MADE + " INTEGER);";
        String query2 =
                "CREATE TABLE " + TABLE_FUELS +
                        " (" + COLUMN_FUEL_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
                        COLUMN_STATION_NAME + " TEXT, " +
                        COLUMN_FUEL_TYPE + " TEXT, " +
                        COLUMN_FUEL_AMOUNT + " INTEGER, " +
                        COLUMN_FUEL_COST + " INTEGER, " +
                        COLUMN_MILEAGE + " INTEGER, " +
                        COLUMN_FUEL_DATE + " TEXT, " +
                        COLUMN_FUELED_CAR_ID + " INTEGER REFERENCES "+ COLUMN_CAR_ID + ");";
        db.execSQL(query1);
        db.execSQL(query2);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS " +  TABLE_CARS);
        db.execSQL("DROP TABLE IF EXISTS " +  TABLE_FUELS);
        onCreate(db);
    }

    void addCar(String brand,
                String model,
                int yearMade
    ) {
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues cv = new ContentValues();

        cv.put(COLUMN_BRAND, brand);
        cv.put(COLUMN_MODEL, model);
        cv.put(COLUMN_YEAR_MADE, yearMade);
        long result = db.insert(TABLE_CARS, null, cv);
        if (result == -1) {
            Toast.makeText(context, "Failed adding new car.", Toast.LENGTH_SHORT).show();
        } else {
            Toast.makeText(context, "Added a new car!", Toast.LENGTH_SHORT).show();
        }
    }

    void addFuel(String stationName,
                 String fuelType,
                 int fuelAmount,
                 int fuelCost,
                 int mileage,
                 String fuelDate,
                 String fueledCarId
    ) {
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues cv = new ContentValues();

        cv.put(COLUMN_STATION_NAME, stationName);
        cv.put(COLUMN_FUEL_TYPE, fuelType);
        cv.put(COLUMN_FUEL_AMOUNT, fuelAmount);
        cv.put(COLUMN_FUEL_COST, fuelCost);
        cv.put(COLUMN_MILEAGE, mileage);
        cv.put(COLUMN_FUEL_DATE, fuelDate);
        cv.put(COLUMN_FUELED_CAR_ID, fueledCarId);
        long result = db.insert(TABLE_FUELS, null, cv);
        if (result == -1) {
            Toast.makeText(context, "Failed adding new refueling.", Toast.LENGTH_SHORT).show();
        } else {
            Toast.makeText(context, "Added a new refueling!", Toast.LENGTH_SHORT).show();
        }
    }

    @SuppressLint("Recycle")
    Cursor readAllCars() {
        String query = "SELECT * FROM " + TABLE_CARS;
        SQLiteDatabase db = this.getReadableDatabase();

        Cursor cursor = null;
        if(db != null) {
            cursor = db.rawQuery(query, null);
        }
        return cursor;
    }

    @SuppressLint("Recycle")
    Cursor readAllFuels() {
        String query = "SELECT * FROM " + TABLE_FUELS;
        SQLiteDatabase db = this.getReadableDatabase();

        Cursor cursor = null;
        if(db != null) {
            cursor = db.rawQuery(query, null);
        }
        return cursor;
    }
}
    public class RecyclerFuelAdapter extends RecyclerView.Adapter<RecyclerFuelAdapter.MyViewHolder> {

    private ArrayList<String> fuelIds, stationNames, fuelTypes, fuelAmounts, fuelCosts, mileages, fuelDates, fueledCarIds;
    private Context context;
    public RecyclerViewClickListener listener;

    public RecyclerFuelAdapter(Context context,
                               ArrayList<String> fuelIds,
                               ArrayList<String> stationNames,
                               ArrayList<String> fuelTypes,
                               ArrayList<String> fuelAmounts,
                               ArrayList<String> fuelCosts,
                               ArrayList<String> mileages,
                               ArrayList<String> fuelDates,
                               ArrayList<String> fueledCarIds,
                               RecyclerViewClickListener listener) {
        this.fuelIds = fuelIds;
        this.stationNames = stationNames;
        this.fuelTypes = fuelTypes;
        this.fuelAmounts = fuelAmounts;
        this.fuelCosts = fuelCosts;
        this.mileages = mileages;
        this.fuelDates = fuelDates;
        this.fueledCarIds = fueledCarIds;
        this.context = context;
        this.listener = listener;
    }

    @NonNull
    @Override
    public RecyclerFuelAdapter.MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        LayoutInflater inflater = LayoutInflater.from(context);
        View fuelView = inflater.inflate(R.layout.list_fuel, parent, false);
        return new MyViewHolder(fuelView);
    }

    @Override
    public void onBindViewHolder(@NonNull RecyclerFuelAdapter.MyViewHolder holder, int position) {

        String $fuelAmount = fuelAmounts.get(position) + "L";
        String $fuelCost = fuelCosts.get(position) + "$";

        holder.fuelIdTv.setText(String.valueOf(fuelIds.get(position)));
        holder.fuelAmountTv.setText($fuelAmount);
        holder.fuelCostTv.setText($fuelCost);
        holder.fuelDateTv.setText(String.valueOf(fuelDates.get(position)));
        holder.fueledCarTv.setText(String.valueOf(fueledCarIds.get(position)));
    }

    @Override
    public int getItemCount() {
        return fuelIds.size();
    }

    public interface RecyclerViewClickListener {
        void onClick(View v, int position);
    }

    public class MyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {

        private TextView fuelIdTv, fuelAmountTv, fuelCostTv, fuelDateTv, fueledCarTv;

        public MyViewHolder(@NonNull View view) {
            super(view);
            fuelIdTv = view.findViewById(R.id.fuelIdTv);
            fuelAmountTv = view.findViewById(R.id.fuelAmountTv);
            fuelCostTv = view.findViewById(R.id.fuelCostTv);
            fuelDateTv = view.findViewById(R.id.fuelDateTv);
            fueledCarTv = view.findViewById(R.id.fueledCarTv);

            view.setOnClickListener(this);
        }

        @Override
        public void onClick(View v) {
            listener.onClick(v, getAdapterPosition());
        }
    }
}
    public class FuelActivity extends AppCompatActivity {


    public static final String COLUMN_CAR_ID = "_id";
    private DatabaseHelper myDB;
    private RecyclerFuelAdapter.RecyclerViewClickListener listener;
    private ArrayList<String> fuelIds, stationNames, fuelTypes, fuelAmounts, fuelCosts, mileages, fuelDates, fueledCarIds;
    private RecyclerView recyclerView;
    private RecyclerFuelAdapter RecyclerFuelAdapter;
    private Button goToAddFuelBtn;

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

        recyclerView = findViewById(R.id.fuelRecycler);
        goToAddFuelBtn = findViewById(R.id.goToAddFuelBtn);

        Intent intent1 = getIntent();
        String value = intent1.getStringExtra(ProfileActivity.COLUMN_CAR_ID);

        goToAddFuelBtn.setOnClickListener(v -> {

            Intent intent4 = new Intent(getApplicationContext(), AddFuelActivity.class);
            intent4.putExtra(COLUMN_CAR_ID, value);
            startActivity(intent4);
        });

        myDB = new DatabaseHelper(FuelActivity.this);
        fuelIds = new ArrayList<>();
        stationNames = new ArrayList<>();
        fuelTypes = new ArrayList<>();
        fuelAmounts = new ArrayList<>();
        fuelCosts = new ArrayList<>();
        mileages = new ArrayList<>();
        fuelDates = new ArrayList<>();
        fueledCarIds = new ArrayList<>();

        storeFuelsInArrays();
        createAdapter();
    }

    @Override
    public void onBackPressed()
    {
        super.onBackPressed();
        startActivity(new Intent(FuelActivity.this, MainActivity.class));
        finish();

    }
    private void createAdapter() {
        setOnClickListener();
        RecyclerFuelAdapter = new RecyclerFuelAdapter(FuelActivity.this, fuelIds, stationNames, fuelTypes, fuelAmounts, fuelCosts, mileages, fuelDates, fueledCarIds,  listener);
        recyclerView.setAdapter(RecyclerFuelAdapter);
        LinearLayoutManager layoutManager = new LinearLayoutManager(FuelActivity.this);
        recyclerView.setLayoutManager(layoutManager);
    }

    private void setOnClickListener() {
        listener = (v, position) -> {
            Toast.makeText(getApplicationContext(), "clicked on " + fuelIds.get(position), Toast.LENGTH_SHORT).show();
        };
    }




    private void storeFuelsInArrays() {
        Cursor cursor = myDB.readAllFuels();
        if (cursor.getCount() == 0) {
            Toast.makeText(this, "No data to be displayed.", Toast.LENGTH_SHORT).show();
        } else {
            while (cursor.moveToNext()) {
                fuelIds.add(cursor.getString(cursor.getColumnIndex("fuel_id")));
                stationNames.add(cursor.getString(cursor.getColumnIndex("station_name")));
                fuelTypes.add(cursor.getString(cursor.getColumnIndex("fuel_type")));
                fuelAmounts.add(cursor.getString(cursor.getColumnIndex("fuel_amount")));
                fuelCosts.add(cursor.getString(cursor.getColumnIndex("fuel_cost")));
                mileages.add(cursor.getString(cursor.getColumnIndex("mileage")));
                fuelDates.add(cursor.getString(cursor.getColumnIndex("fuel_date")));
                fueledCarIds.add(cursor.getString(cursor.getColumnIndex("fueled_car_id")));
            }
        }
    }
 }
    public class ProfileActivity extends AppCompatActivity {

    public static final String COLUMN_CAR_ID = "_id";
    private TextView myCarID, myCarBrand, myCarModel, myCarYear;
    private Button goToFuelList, goToServiceList;


    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.profile_activity);

        myCarID = findViewById(R.id.myCarID);
        myCarBrand = findViewById(R.id.myCarBrand);
        myCarModel = findViewById(R.id.myCarModel);
        myCarYear = findViewById(R.id.myCarYear);
        goToFuelList = findViewById(R.id.goToFuelList);
        goToServiceList = findViewById(R.id.goToServiceList);

        myCarID.setText(getCarsData(0));
        myCarBrand.setText(getCarsData(1));
        myCarModel.setText(getCarsData(2));
        myCarYear.setText(getCarsData(3));

        Intent intent = getIntent();
        String value = intent.getStringExtra(MainActivity.COLUMN_CAR_ID);

        goToFuelList.setOnClickListener(v -> {
            Intent intent1 = new Intent(getApplicationContext(), FuelActivity.class);
            intent1.putExtra(COLUMN_CAR_ID, value);
            startActivity(intent1);
        });
    }

        @SuppressLint("Recycle")
        private String getCarsData(int option) {
            SQLiteDatabase db = this.openOrCreateDatabase("CarsList.db", Context.MODE_PRIVATE, null);
            Cursor cursor;
            if(db != null) {
                Intent intent = getIntent();
                String value = intent.getStringExtra(MainActivity.COLUMN_CAR_ID);
                cursor = db.rawQuery("SELECT _id,car_brand,car_model,car_year_made FROM cars WHERE _id = " + value, null);
                if (cursor.getCount() == 0) {
                    Toast.makeText(getApplicationContext(), "no data", Toast.LENGTH_SHORT).show();
                }
                StringBuilder buffer = new StringBuilder();
                while (cursor.moveToNext()) {
                    switch (option) {
                        case 0: buffer.append(cursor.getString(0));
                        break;
                        case 1: buffer.append(cursor.getString(1));
                        break;
                        case 2: buffer.append(cursor.getString(2));
                        break;
                        case 3: buffer.append(cursor.getString(3));
                        break;
                    }
                }
                return buffer.toString();
            }
            return null;
        }
    }
private void storeFuelsInArrays() {
    Cursor cursor = myDB.readAllFuels();
    Intent intent1 = getIntent();
    String checkedValue = intent1.getStringExtra(ProfileActivity.COLUMN_CAR_ID);
    
    if (cursor.getCount() == 0) {
        Toast.makeText(this, "No data to be displayed.", Toast.LENGTH_SHORT).show();
    } else {
        while (cursor.moveToNext()) {
            String value = cursor.getString(cursor.getColumnIndex("fueled_car_id"));
            if (value.equals(checkedValue)) {
                fuelIds.add(cursor.getString(cursor.getColumnIndex("fuel_id")));
                stationNames.add(cursor.getString(cursor.getColumnIndex("station_name")));
                fuelTypes.add(cursor.getString(cursor.getColumnIndex("fuel_type")));
                fuelAmounts.add(cursor.getString(cursor.getColumnIndex("fuel_amount")));
                fuelCosts.add(cursor.getString(cursor.getColumnIndex("fuel_cost")));
                mileages.add(cursor.getString(cursor.getColumnIndex("mileage")));
                fuelDates.add(cursor.getString(cursor.getColumnIndex("fuel_date")));
                fueledCarIds.add(cursor.getString(cursor.getColumnIndex("fueled_car_id")));
            }
        }
    }
}
如果有人知道更好的方法,我很高兴你能把他们放在这里