Я запросил данные из Firebase и добавил их в horizontalscrollmodellist и viewalllist и передал их адаптеру домашней страницы, чтобы отобразить их в макете сетки и горизонтальной прокрутке, чтобы они отлично отображали запрашиваемые данные на домашней странице. но если я передаю тот же список из адаптера, чтобы просмотреть все действия для отображения в представлении переработчика и в представлении сетки, то, кажется, все в порядке и без ошибок, но когда приложение запускает представление, все действия не отображают данные в представлении сетки и представлении переработчика. Я перепробовал все, но проблема сохраняется. Пожалуйста, помогите мне с этим.
Спасибо всем заранее!
Это список запросов:
package com.my.electroshop;
import android.content.Context;
import android.widget.Toast;
import androidx.annotation.NonNull;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.firestore.FirebaseFirestore;
import com.google.firebase.firestore.QueryDocumentSnapshot;
import com.google.firebase.firestore.QuerySnapshot;
import java.util.ArrayList;
import java.util.List;
public class DBqueries {
public static FirebaseFirestore firebaseFirestore = FirebaseFirestore.getInstance();
public static List<CatagoryModel> catagoryModelList = new ArrayList<>();
public static List<HomePageModel> homePageModelList = new ArrayList<>();
public static void loadCategories(final CatagoryAdaptor catagoryAdaptor , final Context context){
firebaseFirestore.collection("CATEGORIES").orderBy("index").get()
.addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()){
for(QueryDocumentSnapshot documentSnapshot : task.getResult()){
catagoryModelList.add(new CatagoryModel(documentSnapshot.get("icon").toString(),documentSnapshot.get("categoryName").toString()));
}
catagoryAdaptor.notifyDataSetChanged();
}else{
String error = task.getException().getMessage();
Toast.makeText(context, error,Toast.LENGTH_SHORT).show();
}
}
});
}
public static void loadFragmentData(final HomePageAdapter adapter , final Context context){
firebaseFirestore.collection("CATEGORIES").document("HOME").collection("TOP_DEALS").orderBy("index").get()
.addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()){
for(QueryDocumentSnapshot documentSnapshot : task.getResult()) {
if ((long) documentSnapshot.get("view_type") == 0) {
List<SliderModel> sliderModelList = new ArrayList<>();
long no_of_banners = (long) documentSnapshot.get("no_of_banners");
for (long x = 1;x < no_of_banners +1;x++) {
sliderModelList.add(new SliderModel(documentSnapshot.get("banner_" + x).toString()
, documentSnapshot.get("banner_" + x + "_background").toString()));
}
homePageModelList.add(new HomePageModel(0, sliderModelList));
} else if ((long) documentSnapshot.get("view_type") == 1) {
homePageModelList.add(new HomePageModel(1, documentSnapshot.get("strip_ad_banner").toString(),
documentSnapshot.get("background").toString()));
} else if ((long) documentSnapshot.get("view_type") == 2) {
List<WishListModel> viewAllProductList = new ArrayList<>();
List<HorizontalProductScrollModel> horizontalProductScrollModelList = new ArrayList<>();
long no_of_products = (long) documentSnapshot.get("no_of_products");
for (long x = 1;x < no_of_products +1;x++) {
horizontalProductScrollModelList.add(new HorizontalProductScrollModel(documentSnapshot.get("product_ID_"+x).toString()
, documentSnapshot.get("product_image_"+x).toString()
,documentSnapshot.get("product_title_"+x).toString()
,documentSnapshot.get("product_subtitle_"+x).toString()
,documentSnapshot.get("product_price_"+x).toString()));
viewAllProductList.add(new WishListModel(documentSnapshot.get("product_image_"+x).toString()
,documentSnapshot.get("product_full_title_"+x).toString()
,(long)documentSnapshot.get("free_coupens_"+x)
,documentSnapshot.get("average_rating_"+x).toString()
,(long)documentSnapshot.get("total_rating_"+x)
,documentSnapshot.get("product_price_"+x).toString()
,documentSnapshot.get("cutted_price_"+x).toString()
,(boolean)documentSnapshot.get("COD_"+x)));
}
homePageModelList.add(new HomePageModel(2, documentSnapshot.get("layout_title").toString()
, documentSnapshot.get("layout_background").toString(), horizontalProductScrollModelList , viewAllProductList));
} else if ((long) documentSnapshot.get("view_type") == 3) {
List<HorizontalProductScrollModel> gridLayoutModelList = new ArrayList<>();
long no_of_products = (long) documentSnapshot.get("no_of_products");
for (long x = 1;x < no_of_products +1;x++) {
gridLayoutModelList.add(new HorizontalProductScrollModel(documentSnapshot.get("product_ID_"+x).toString()
, documentSnapshot.get("product_image_"+x).toString()
,documentSnapshot.get("product_title_"+x).toString()
,documentSnapshot.get("product_subtitle_"+x).toString()
,documentSnapshot.get("product_price_"+x).toString()));
}
homePageModelList.add(new HomePageModel(3, documentSnapshot.get("layout_title").toString()
, documentSnapshot.get("layout_background").toString(), gridLayoutModelList));
}
}
adapter.notifyDataSetChanged();
}else{
String error = task.getException().getMessage();
Toast.makeText(context, error,Toast.LENGTH_SHORT).show();
}
}
});
}
}
Это адаптер домашней страницы
package com.my.electroshop;
import android.content.Intent;
import android.content.res.ColorStateList;
import android.graphics.Color;
import android.os.Handler;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.gridlayout.widget.GridLayout;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.viewpager.widget.ViewPager;
import com.bumptech.glide.Glide;
import com.bumptech.glide.request.RequestOptions;
import java.util.ArrayList;
import java.util.List;
import java.util.Timer;
import java.util.TimerTask;
public class HomePageAdapter extends RecyclerView.Adapter {
private List<HomePageModel> homePageModelList;
private RecyclerView.RecycledViewPool recycledViewPool;
public HomePageAdapter(List<HomePageModel> homePageModelList) {
this.homePageModelList = homePageModelList;
recycledViewPool = new RecyclerView.RecycledViewPool();
}
@Override
public int getItemViewType(int position) {
switch (homePageModelList.get(position).getType()) {
case 0:
return HomePageModel.BANNER_SLIDER;
case 1:
return HomePageModel.STRIP_AD_BANNER;
case 2:
return HomePageModel.HORIZONTAL_PRODUCT_VIEW;
case 3:
return HomePageModel.GRID_PRODUCT_VIEW;
default:
return -1;
}
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
switch (viewType) {
case HomePageModel.BANNER_SLIDER:
View bannerSliderView = LayoutInflater.from(parent.getContext()).inflate(R.layout.sliding_ad_layout, parent, false);
return new BannerSliderViewHolder(bannerSliderView);
case HomePageModel.STRIP_AD_BANNER:
View stripAdView = LayoutInflater.from(parent.getContext()).inflate(R.layout.strip_ad_layout, parent, false);
return new StripAdBannerViewHolder(stripAdView);
case HomePageModel.HORIZONTAL_PRODUCT_VIEW:
View horizontalProductView = LayoutInflater.from(parent.getContext()).inflate(R.layout.horizontal_scroll_layout, parent, false);
return new HorizontalProductViewHolder(horizontalProductView);
case HomePageModel.GRID_PRODUCT_VIEW:
View gridProductView = LayoutInflater.from(parent.getContext()).inflate(R.layout.grid_product_layout, parent, false);
return new GridProductViewHolder(gridProductView);
default:
return null;
}
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
switch (homePageModelList.get(position).getType()) {
case HomePageModel.BANNER_SLIDER:
List<SliderModel> sliderModelList = homePageModelList.get(position).getSliderModelList();
((BannerSliderViewHolder) holder).setBannerSliderViewPager(sliderModelList);
break;
case HomePageModel.STRIP_AD_BANNER:
String resource = homePageModelList.get(position).getResource();
String color = homePageModelList.get(position).getBackgroundColor();
((StripAdBannerViewHolder) holder).setStripAd(resource, color);
break;
case HomePageModel.HORIZONTAL_PRODUCT_VIEW:
String layoutColor = homePageModelList.get(position).getBackgroundColor();
String horizontalLayoutTitle = homePageModelList.get(position).getTitle();
List<WishListModel>viewAllProductList = homePageModelList.get(position).getViewAllProductList();
List<HorizontalProductScrollModel> horizontalProductScrollModelList =homePageModelList.get(position).getHorizontalProductScrollModelList();
((HorizontalProductViewHolder) holder).setHorizontalProductLayout(horizontalProductScrollModelList, horizontalLayoutTitle ,layoutColor , viewAllProductList);
break;
case HomePageModel.GRID_PRODUCT_VIEW:
String gridLayoutColor = homePageModelList.get(position).getBackgroundColor();
String gridLayoutTitle = homePageModelList.get(position).getTitle();
List<HorizontalProductScrollModel> gridProductScrollModelList =homePageModelList.get(position).getHorizontalProductScrollModelList();
((GridProductViewHolder) holder).setGridProductLayout(gridProductScrollModelList, gridLayoutTitle ,gridLayoutColor);
break;
default:
return;
}
}
@Override
public int getItemCount() {
return homePageModelList.size();
}
public class BannerSliderViewHolder extends RecyclerView.ViewHolder {
private ViewPager bannerSliderViewPager;
private int currentPage;
private Timer timer;
final private long DELAY_TIME = 3000;
final private long PERIOD_TIME = 3000;
private List<SliderModel> arrangedList;
public BannerSliderViewHolder(@NonNull View itemView) {
super(itemView);
bannerSliderViewPager = itemView.findViewById(R.id.banner_slider_view_pager);
}
private void setBannerSliderViewPager(final List<SliderModel> sliderModelList) {
currentPage = 2;
if(timer!=null){
timer.cancel();
}
arrangedList = new ArrayList<>();
for(int x = 0; x< sliderModelList.size() ; x++){
arrangedList.add(x,sliderModelList.get(x));
}
arrangedList.add(0,sliderModelList.get(sliderModelList.size() - 2));
arrangedList.add(1,sliderModelList.get(sliderModelList.size() - 1));
arrangedList.add(sliderModelList.get(0));
arrangedList.add(sliderModelList.get(1));
SliderAdapter sliderAdapter = new SliderAdapter(arrangedList);
bannerSliderViewPager.setAdapter(sliderAdapter);
bannerSliderViewPager.setClipToPadding(false);
bannerSliderViewPager.setPageMargin(20);
bannerSliderViewPager.setPageMargin(currentPage);
ViewPager.OnPageChangeListener onPageChangeListener = new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
currentPage = position;
}
@Override
public void onPageScrollStateChanged(int state) {
if (state == ViewPager.SCROLL_STATE_IDLE) {
pageLooper(arrangedList);
}
}
};
bannerSliderViewPager.addOnPageChangeListener(onPageChangeListener);
startBannerSlideShow(arrangedList);
bannerSliderViewPager.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
pageLooper(arrangedList);
stopBannerSlideShow();
if (event.getAction() == MotionEvent.ACTION_UP) {
startBannerSlideShow(arrangedList);
}
return false;
}
});
}
private void pageLooper(List<SliderModel> sliderModelList) {
if (currentPage == sliderModelList.size() - 2) {
currentPage = 2;
bannerSliderViewPager.setCurrentItem(currentPage, false);
}
if (currentPage == 1) {
currentPage = sliderModelList.size() - 3;
bannerSliderViewPager.setCurrentItem(currentPage, false);
}
}
private void startBannerSlideShow(final List<SliderModel> sliderModelList) {
final Handler handler = new Handler();
final Runnable update = new Runnable() {
@Override
public void run() {
if (currentPage >= sliderModelList.size()) {
currentPage = 1;
}
bannerSliderViewPager.setCurrentItem(currentPage++, true);
}
};
timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
handler.post(update);
}
}, DELAY_TIME, PERIOD_TIME);
}
private void stopBannerSlideShow() {
timer.cancel();
}
}
public class StripAdBannerViewHolder extends RecyclerView.ViewHolder {
private ImageView stripAdImage;
private ConstraintLayout stripAdContainer;
public StripAdBannerViewHolder(@NonNull View itemView) {
super(itemView);
stripAdImage = itemView.findViewById(R.id.strip_ad_image);
stripAdContainer = itemView.findViewById(R.id.strip_ad_container);
}
private void setStripAd(String resource, String color) {
Glide.with(itemView.getContext()).load(resource).apply(new RequestOptions().placeholder(R.mipmap.search)).into(stripAdImage);
stripAdContainer.setBackgroundColor(Color.parseColor(color));
}
}
public class HorizontalProductViewHolder extends RecyclerView.ViewHolder {
private ConstraintLayout container;
private TextView horizontalLayoutTitle;
private Button horizontalViewAllBtn;
private RecyclerView horizontalRecyclerView;
public HorizontalProductViewHolder(@NonNull View itemView) {
super(itemView);
container = itemView.findViewById(R.id.container);
horizontalLayoutTitle = itemView.findViewById(R.id.horizontal_scroll_layout_title);
horizontalViewAllBtn = itemView.findViewById(R.id.horizontal_scroll_view_all_btn);
horizontalRecyclerView = itemView.findViewById(R.id.horizontal_scroll_layout_recyclerview);
horizontalRecyclerView.setRecycledViewPool(recycledViewPool);
}
private void setHorizontalProductLayout(List<HorizontalProductScrollModel> horizontalProductScrollModelList, final String title , String color , final List<WishListModel> viewAllProductList) {
container.setBackgroundTintList(ColorStateList.valueOf(Color.parseColor(color)));
horizontalLayoutTitle.setText(title);
if(horizontalProductScrollModelList.size()>8){
horizontalViewAllBtn.setVisibility(View.VISIBLE);
horizontalViewAllBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ViewAllActivity.wishListModelList = viewAllProductList;
Intent viewAllIntent = new Intent(itemView.getContext(),ViewAllActivity.class);
viewAllIntent.putExtra("Layout_code",0);
viewAllIntent.putExtra("title",title);
itemView.getContext().startActivity(viewAllIntent);
}
});
}else {
horizontalViewAllBtn.setVisibility(View.INVISIBLE);
}
HorizontalProductScrollAdapter horizontalProductScrollAdapter = new HorizontalProductScrollAdapter(horizontalProductScrollModelList);
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(itemView.getContext());
linearLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
horizontalRecyclerView.setLayoutManager(linearLayoutManager);
horizontalRecyclerView.setAdapter(horizontalProductScrollAdapter);
horizontalProductScrollAdapter.notifyDataSetChanged();
}
}
public class GridProductViewHolder extends RecyclerView.ViewHolder{
private ConstraintLayout container;
private TextView gridLayoutTitle;
private Button gridLayoutViewAllBtn;
private GridLayout gridProductLayout;
public GridProductViewHolder(@NonNull View itemView) {
super(itemView);
container =itemView.findViewById(R.id.container);
gridLayoutTitle = itemView.findViewById(R.id.grid_product_layout_title);
gridLayoutViewAllBtn = itemView.findViewById(R.id.grid_product_layout_viewall_btn);
gridProductLayout = itemView.findViewById(R.id.grid_layout);
}
private void setGridProductLayout(final List<HorizontalProductScrollModel> horizontalProductScrollModelList, final String title , String color){
container.setBackgroundTintList(ColorStateList.valueOf(Color.parseColor(color)));
gridLayoutTitle.setText(title);
for(int x = 0; x < 4 ; x++){
ImageView productImage = gridProductLayout.getChildAt(x).findViewById(R.id.h_s_product_image);
TextView productTitle = gridProductLayout.getChildAt(x).findViewById(R.id.h_s_prodrct_title);
TextView productDescription = gridProductLayout.getChildAt(x).findViewById(R.id.h_s_product_discription);
TextView productPrice = gridProductLayout.getChildAt(x).findViewById(R.id.h_s_product_price);
Glide.with(itemView.getContext()).load(horizontalProductScrollModelList.get(x).getProductImage()).apply(new RequestOptions().placeholder(R.mipmap.search)).into(productImage);
productTitle.setText(horizontalProductScrollModelList.get(x).getProductTitle());
productDescription.setText(horizontalProductScrollModelList.get(x).getProductDescription());
productPrice.setText("Rs. "+horizontalProductScrollModelList.get(x).getProductPrice()+"/-");
gridProductLayout.getChildAt(x).setBackgroundColor(Color.parseColor("#ffffff"));
gridProductLayout.getChildAt(x).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent productDetailsIntent = new Intent(itemView.getContext(),ProductDetailsActivity.class);
itemView.getContext().startActivity(productDetailsIntent);
}
});
}
gridLayoutViewAllBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ViewAllActivity.horizontalProductScrollModelList = horizontalProductScrollModelList;
Intent viewAllIntent = new Intent(itemView.getContext(),ViewAllActivity.class);
viewAllIntent.putExtra("Layout_code",1);
viewAllIntent.putExtra("title", title);
itemView.getContext().startActivity(viewAllIntent);
}
});
}
}
}
Это просмотр всех действий:
package com.my.electroshop;
import android.os.Bundle;
import android.view.MenuItem;
import android.view.View;
import android.widget.GridView;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import java.util.List;
public class ViewAllActivity extends AppCompatActivity {
private RecyclerView recyclerView;
private GridView gridView;
public static List<HorizontalProductScrollModel> horizontalProductScrollModelList;
public static List<WishListModel> wishListModelList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_view_all);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayShowTitleEnabled(true);
getSupportActionBar().setTitle(getIntent().getStringExtra("title"));
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
recyclerView = findViewById(R.id.recycler_view);
gridView = findViewById(R.id.grid_view);
int layout_code = getIntent().getIntExtra("layout_code",-1);
if(layout_code == 0) {
recyclerView.setVisibility(View.VISIBLE);
LinearLayoutManager layoutManager = new LinearLayoutManager(this);
layoutManager.setOrientation(RecyclerView.VERTICAL);
recyclerView.setLayoutManager(layoutManager);
WishListAdapter adapter = new WishListAdapter(wishListModelList, false);
recyclerView.setAdapter(adapter);
adapter.notifyDataSetChanged();
} else if (layout_code == 1) {
gridView.setVisibility(View.VISIBLE);
GridProductLayoutAdapter gridProductLayoutAdapter = new GridProductLayoutAdapter(horizontalProductScrollModelList);
gridView.setAdapter(gridProductLayoutAdapter);
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if(item.getItemId() == android.R.id.home){
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
}
В разделе об ошибках это отображается, когда я переключаюсь, чтобы просмотреть все действия