Невозможно увидеть данные в избранном фрагменте из домашнего фрагментаAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Гость
 Невозможно увидеть данные в избранном фрагменте из домашнего фрагмента

Сообщение Гость »


После нажатия на кнопку с сердечком карта должна быть сохранена в избранном фрагменте. Я использую Room Db для сохранения карты. Я также создал класс dao и класс базы данных. Я также сделал запрос на вставку на кнопке с сердечком
>
пакет com.trycatch_tanmay.code; импортировать android.os.Bundle; импортировать android.view.LayoutInflater; импортировать android.view.View; импортировать android.view.ViewGroup; импортировать androidx.fragment.app.Fragment; импортировать androidx.recyclerview.widget.GridLayoutManager; импортировать androidx.recyclerview.widget.RecyclerView; импортировать com.trycatch_tanmay.ModelHome; импортировать java.util.ArrayList; импортировать java.util.List; публичный класс FavouriteFragment расширяет Fragment реализует FavouriteAdapter.OnFavoriteItemClickListener { частный RecyclerView favoRv; частный FavoriteAdapter favouriteAdapter; частный список favouriteList; частный FavouriteDao favouriteDao; частная база данных FavouriteDatabase @Override public View onCreateView (инфлятор LayoutInflater, контейнер ViewGroup, Пакет saveInstanceState) { Просмотр представления = inflater.inflate(R.layout.fragment_favourite,Container, false); favoRv = view.findViewById(R.id.favoRv); favouriteList = новый ArrayList(); favouriteAdapter = новый FavouriteAdapter (requireContext (), favouriteList); favoRv.setLayoutManager(новый GridLayoutManager(requireContext(), 2)); favoRv.setAdapter(любимыйАдаптер); // Инициализируем экземпляр FavouriteDatabase favouriteDatabase = FavouriteDatabase.getInstance(requireContext()); // Инициализируем экземпляр FavouriteDao favouriteDao = favouriteDatabase.getfavouriteDao(); выборка данных(); обратный вид; } частная пустота fetchData() { список избранного.очистить(); // Очистка предыдущих данных перед получением новых данных // Извлекаем данные из базы данных List userList = favouriteDao.getAllUsers(); for (ModelHome modelHome: userList) { favouriteList.add(modelHome); // Добавляем каждый полученный элемент в список избранного } любимыйAdapter.notifyDataSetChanged(); // Уведомляем адаптер об изменении данных } @Override общественный недействительный onResume () { супер.онрезюме(); выборка данных(); // Обновляем данные при возобновлении фрагмента } @Override public void onFavoriteItemClick (int Position) { // Здесь обрабатываем клик по элементу в избранном ModelHome clickedItem = favouriteList.get(position); //Реализуем вашу логику } } это мой любимый фрагмент пакет com.trycatch_tanmay.code; импортировать android.os.Bundle; импортировать android.view.LayoutInflater; импортировать android.view.View; импортировать android.view.ViewGroup; импортировать androidx.fragment.app.Fragment; импортировать androidx.fragment.app.FragmentTransaction; импортировать androidx.recyclerview.widget.GridLayoutManager; импортировать androidx.recyclerview.widget.RecyclerView; импортировать com.trycatch_tanmay.HomeAdapter; импортировать com.trycatch_tanmay.ModelHome; импортировать java.util.ArrayList; импортировать java.util.List; публичный класс HomeFragment расширяет Fragment реализует HomeAdapter.OnFavoriteItemClickListener { частный RecyclerView recyclerView; частный HomeAdapter homeAdapter; частный список modelHomeList = новый ArrayList(); частный UserDao userDao; частная база данных FavouriteDatabase частный FavouriteDao favouriteDao; // Правильная инициализация Любимый адаптер @Override public View onCreateView (инфлятор LayoutInflater, контейнер ViewGroup, Пакет saveInstanceState) { Просмотр представления = inflater.inflate(R.layout.fragment_home,Container, false); recyclerView = view.findViewById(R.id.recyclerView); homeAdapter = новый HomeAdapter(requireContext(), modelHomeList,favouriteDao); recyclerView.setLayoutManager(новый GridLayoutManager(requireContext(), 2)); recyclerView.setAdapter(homeAdapter); // Инициализируем экземпляр FavouriteDatabase favouriteDatabase = FavouriteDatabase.getInstance(requireContext()); // Инициализируем экземпляр FavouriteDao favouriteDao = favouriteDatabase.getfavouriteDao(); // Правильная инициализация База данных пользователей userDatabase = Userdatabase.getINSTANCE(requireContext()); userDao = userDatabase.getmodel(); выборка данных(); // Устанавливаем прослушиватель кликов для HomeAdapter homeAdapter.setOnFavoriteItemClickListener (новый HomeAdapter.OnFavoriteItemClickListener () { @Override public void onFavoriteItemClick (int Position, ModelHome modelHome) { handleFavoriteItemClick (позиция, modelHome); } }); обратный вид; } частная пустота fetchData() { homeAdapter.clearData(); Список userList = userDao.getAllUsers(); for (ModelHome modelHome: userList) { homeAdapter.addUser(модельHome); } } @Override общественный недействительный onResume () { супер.онрезюме(); выборка данных(); } @Override public void onFavoriteItemClick (int Position, ModelHome modelHome) { // handleFavoriteItemClick(position, modelHome); // Здесь обрабатываем клик по элементу в избранном ModelHome clickedItem = modelHomeList.get(position); //Реализуем вашу логику // Вызов метода Insert, чтобы сохранить clickedItem в базе данных любимыйDao.Insert(clickedItem); // Уведомляем адаптер об изменении данных в FavouriteFragment любимыйAdapter.addUser(clickedItem); } Private void handleFavoriteItemClick (int Position, ModelHome clickedItem) { //// ADpter щелкните прослушиватель, вставьте запрос на кнопку сердца и любимое dao inziale, любимое получить все // Получаем экземпляр FavouriteDao FavouriteDao favouriteDao = favouriteDatabase.getfavouriteDao(); // Вызов метода Insert, чтобы сохранить clickedItem в базе данных любимыйDao.Insert(clickedItem); // Заменяем фрагмент на FavouriteFragment и передаем выбранный элемент Фрагмент favouriteFragment = новый FavouriteFragment(); Bundle Bundle = новый Bundle(); Bundle.putParcelable("clickedItem", clickedItem); favouriteFragment.setArguments(пакет); Транзакция FragmentTransaction = getParentFragmentManager().beginTransaction(); транзакция.replace(R.id.favourite_container, favouriteFragment); транзакция.addToBackStack(ноль); транзакция.commit(); } } это мой пакет HomeFragnment com.trycatch_tanmay; импортировать android.content.Context; импортировать android.view.LayoutInflater; импортировать android.view.View; импортировать android.view.ViewGroup; импортировать android.widget.ImageView; импортировать android.widget.TextView; импортировать androidx.annotation.NonNull; импортировать androidx.recyclerview.widget.RecyclerView; импортировать com.bumptech.glide.Glide; импортировать com.trycatch_tanmay.code.FavouriteDao; импортировать com.trycatch_tanmay.code.R; импортировать java.util.ArrayList; импортировать java.util.List; общедоступный класс HomeAdapter расширяет RecyclerView.Adapter { частный контекст контекста; частный список modelHomes; частный FavouriteDao favouriteDao; // Добавляем поле FavouriteDao частный прослушиватель OnFavoriteItemClickListener; // Исправленное имя переменной общедоступный интерфейс OnFavoriteItemClickListener { void onFavoriteItemClick (int Position, ModelHome modelHome); } public HomeAdapter (Контекст контекста, List modelHomes, FavouriteDao favouriteDao) { this.context = контекст; this.modelHomes = новый ArrayList(modelHomes); this.favouriteDao = любимоеDao; } public void addUser(ModelHome modelHome) { modelHomes.add(modelHome); уведомитьDataSetChanged(); } общественный недействительный ClearData () { модельДома.очистить(); уведомитьDataSetChanged(); } public void setModelHomes(List modelHomes) { this.modelHomes = новый ArrayList(modelHomes); уведомитьDataSetChanged(); } public void setImageData(List modelHomes) { this.modelHomes = новый ArrayList(modelHomes); уведомитьDataSetChanged(); } // Исправление реализации слушателя public void setOnFavoriteItemClickListener (прослушиватель OnFavoriteItemClickListener) { this.listener = слушатель; } @NonNull @Override public HomeAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup родительский, int viewType) { Просмотр представления = LayoutInflater.from(context).inflate(R.layout.homeitemview, родительский, false); вернуть новый ViewHolder(представление); } @Override public void onBindViewHolder(@NonNull HomeAdapter.ViewHolder Holder, int Position) { окончательный ModelHome modelHome = modelHomes.get(position); // Объявляем здесь как окончательный if (modelHomes.get(position).getName() != null && modelHomes.get(position).getContact() != null && modelHomes.get(position).getAddress() != null && modelHomes.get(position).getPosition() != null) { if (modelHome.getImagePath() != null) { // Используйте Glide или Picasso для загрузки изображения в ImageView Glide.with(context).load(modelHome.getImagePath()).into(holder.image_1); } // Устанавливаем данные в представления Holder.textView1.setText("Имена:" + modelHomes.get(position).getName()); Holder.textView2.setText(("Позиция:" + modelHome.getPosition())); Holder.textView3.setText("Название компании:" + modelHome.getAddress()); Holder.favoriteOpt.setOnClickListener(v -> { // Обрабатываем выбор избранной опции если (фаворитДао != ноль) { любимыйDao.Insert(modelHome); // Вставляем выбранный элемент в базу данных } }); } } @Override общественный ИНТ getItemCount () { вернуть модельДома.размер(); } публичный класс ViewHolder расширяет RecyclerView.ViewHolder { ImageView image_1, image_menu, editOpt, FavoriteOpt, ShareOpt; TextView textView1, textView2, textView3; public ViewHolder(@NonNull Посмотреть itemView) { супер (предметView); image_1 = itemView.findViewById(R.id.image_1); image_menu = itemView.findViewById(R.id.image_menu); editOpt = itemView.findViewById(R.id.editOpt); FavoriteOpt = itemView.findViewById(R.id.favoriteOpt); ShareOpt = itemView.findViewById(R.id.shareOpt); textView1 = itemView.findViewById(R.id.textView1); textView2 = itemView.findViewById(R.id.textView2); textView3 = itemView.findViewById(R.id.textView3); // Устанавливаем clickOnclickListener для favouriteOpt FavoriteOpt.setOnClickListener(v -> { int адаптерПозиция = getAdapterPosition(); if (adapterPosition != RecyclerView.NO_POSITION) { если (слушатель != ноль) { Listener.onFavoriteItemClick(adapterPosition, modelHomes.get(adapterPosition)); } } }); } } } это мой домашний адаптер, который работает при нажатии и вызывает этот интерфейс в Homefragnment Я поместил запрос на вставку в кнопку сердца и получил весь метод, используемый в любимом фрагменте, тогда почему этого не происходит
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»