Данные не вставляются в базу данных комнаты Android - PullRequest
1 голос
/ 12 января 2020

Я новичок в 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

publi c 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

publi c Класс 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);

    }
}
  }

1 Ответ

0 голосов
/ 15 января 2020

Нет ничего плохого в вашей операции вставки с комнатой. То, как вы использовали живую дату в вашем приложении, кажется неправильным, поэтому ваша программа работает, но результат не приходит. Вы должны проверить часть, где вы используете живые данные. Надеюсь, это поможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...