数据未插入数据库空间 Android

Data not inserting into the Database room Android

我是 android 的新手,这是我第一次在我的应用程序中使用空间。未执行插入操作或未创建数据库或任何其他错误。

我不知道我做错了什么所以我需要你的帮助。

这个程序是运行但是没有显示结果。屏幕上没有任何显示。

这是我的代码- 请让我知道这段代码有什么问题以及我应该如何纠正它。

Car_details.java

@PrimaryKey
@NonNull
@SerializedName("id")
@Expose
private String id;
@SerializedName("name")
@Expose
private String name;
@SerializedName("desc")
@Expose
private String desc;
@SerializedName("image")
@Expose
private String image;

CarDao.java-

@Insert(onConflict = OnConflictStrategy.REPLACE)
void insert(Car_Details car_details);

@Query("Select * from car_table")
LiveData<List<Car_Details>> selectAll();

CarListDatabase.java

private static CarListDatabase instance;

public abstract CarDao carDao();

public static synchronized CarListDatabase getInstance(Context context){

    if(instance==null)
    {
        instance= Room.databaseBuilder(context.getApplicationContext(),
                CarListDatabase.class,"Car_database").fallbackToDestructiveMigration()
               .build();
    }
    return  instance;
}

CarRepository.java

public void getCarList(){

    CarlistInterface carlistInterface= retrofit.create(CarlistInterface.class);

    Call<List<Car_Details>> carList= carlistInterface.carList();

    carList.enqueue(new Callback<List<Car_Details>>() {
        @Override
        public void onResponse(Call<List<Car_Details>> call, final Response<List<Car_Details>> response) {

            if(response.body() != null){

                List<Car_Details> car_details = response.body();

                for (int i = 0; i < car_details.size(); i++) {

                    String id=car_details.get(i).getId();
                    String names = car_details.get(i).getName();
                    String desc=car_details.get(i).getDesc();
                    String image= car_details.get(i).getImage();

                    Car_Details car = new Car_Details();
                    car .setId(id);
                    car .setName(names);
                    car .setDesc(desc);
                    car .setImage(image);

                  new InsertNoteAsyncTask(carDao).execute(car);
            }
        }
    }
    });
    }

public LiveData<List<Car_Details>> getCarLists(){

    return allCarList;
}

private static class  InsertNoteAsyncTask extends AsyncTask<Car_Details,Void,Void> {

    private CarDao carDao;
    private InsertNoteAsyncTask(CarDao carDao){
        this.carDao= carDao;
    }

    @Override
    protected Void doInBackground(Car_Details... car_details) {
        carDao.insert(car_details[0]);
        return null;
    }

CarViewModel.java

public CarViewModel(@NonNull Application application) {
    super(application);
    repository= new CarRepository(application);
    carList= repository.getCarLists();
}


public LiveData<List<Car_Details>> getListLiveData() {
    return carList;

MainActivity.java

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

    repository = new CarRepository(this);
    carViewModel = ViewModelProviders.of(this).get(CarViewModel.class);

    recyclerView= findViewById(R.id.cars_recyclerView);
    recyclerView.setHasFixedSize(true);
    recyclerView.setLayoutManager(new LinearLayoutManager(this));

    List = new ArrayList<>();

    recyclerAdapter = new RecyclerAdapter(List);
    recyclerView.setAdapter(recyclerAdapter);


    recyclerAdapter = new RecyclerAdapter(List);
    recyclerView.setAdapter(recyclerAdapter);

    carViewModel.getListLiveData().observe(this, new 
Observer<java.util.List<Car_Details>>() {
        @Override
        public void onChanged(java.util.List<Car_Details> car_details) {
            recyclerAdapter.setUserList(List);
        }
    });


    repository.getCarList();
}

RecyclerAdapter.java

public class RecyclerAdapter 扩展 RecyclerView.Adapter {

List<Car_Details> carList= new ArrayList<>();

public RecyclerAdapter(List<Car_Details> carList) {
    this.carList = carList;
   }

@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

    LayoutInflater layoutInflater= LayoutInflater.from(parent.getContext());
    View view= layoutInflater.inflate(R.layout.row_item,parent,false);
    return new RecyclerAdapter.ViewHolder(view);
   }

@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
    holder.car_name.setText(carList.get(position).getName());
    holder.car_desc.setText(carList.get(position).getDesc());

  }

public void setUserList(List<Car_Details> userList) {
    this.carList = userList;
    notifyDataSetChanged();
   }

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

 class ViewHolder extends RecyclerView.ViewHolder {

    private TextView car_name,car_desc;

     public ViewHolder(@NonNull View itemView) {
      super(itemView);

      car_name= itemView.findViewById(R.id.car_name);
      car_desc= itemView.findViewById(R.id.car_desc);

    }
    }
      }

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

class ViewHolder extends RecyclerView.ViewHolder {

    private TextView car_name,car_desc;

    public ViewHolder(@NonNull View itemView) {
      super(itemView);

      car_name= itemView.findViewById(R.id.car_name);
      car_desc= itemView.findViewById(R.id.car_desc);

    }
}
  }

你的插入操作没有问题。 您在应用程序中使用实时日期的方式似乎是错误的,这就是为什么您的程序是 运行 但没有结果的原因。 您必须检查使用实时数据的部分。 希望这对你有所帮助。