Java SetAdapter空指针对象异常 package com.example.shift.adapter; 导入android.graphics.Color; 导入android.os.Handler; 导入android.view.LayoutInflat
SetAdapter空指针对象异常Java SetAdapter空指针对象异常 package com.example.shift.adapter; 导入android.graphics.Color; 导入android.os.Handler; 导入android.view.LayoutInflat,java,android,android-recyclerview,adapter,android-viewholder,Java,Android,Android Recyclerview,Adapter,Android Viewholder,SetAdapter空指针对象异常 package com.example.shift.adapter; 导入android.graphics.Color; 导入android.os.Handler; 导入android.view.LayoutInflater; 导入android.view.MotionEvent; 导入android.view.view; 导入android.view.ViewGroup; 导入android.widget.Button; 导入android.widget.G
package com.example.shift.adapter;
导入android.graphics.Color;
导入android.os.Handler;
导入android.view.LayoutInflater;
导入android.view.MotionEvent;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.Button;
导入android.widget.GridView;
导入android.widget.ImageView;
导入android.widget.TextView;
导入androidx.annotation.NonNull;
导入androidx.constraintlayout.widget.constraintlayout;
导入androidx.recyclerview.widget.LinearLayoutManager;
导入androidx.recyclerview.widget.recyclerview;
导入androidx.viewpager.widget.viewpager;
导入com.example.shift.R;
导入com.example.shift.modal.HomePageModal;
导入com.example.shift.modal.HorizontalProductScrollModel;
导入com.example.shift.modal.sliderModel;
导入org.jetbrains.annotations.NotNull;
导入java.util.List;
导入java.util.Timer;
导入java.util.TimerTask;
公共类HomePageAdapter扩展了RecyclerView.Adapter{
私有列表主页Modallist;
公共HomePageAdapter(列出homePageModalList){
this.homePageModalList=homePageModalList;
}
@凌驾
public int getItemViewType(int位置){
开关(homePageModalList.get(position.getType()){
案例0:
返回HomePageModal.BANNER_滑块;
案例1:
返回HomePageModal.STRIP_广告条;
案例2:
返回HomePageModal.HORIZONTAL\u产品视图;
案例3:
返回HomePageModal.GRID\u产品\u视图;
违约:
返回-1;
}
}
@非空
@凌驾
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup父级,int-viewType){
开关(视图类型){
案例HomePageModal.BANNER_滑块:
查看bannerSliderview=LayoutInflater.from(parent.getContext())。充气(R.layout.slider\u布局,parent,false);
返回新的bannerSliderview文件夹(bannerSliderview);
案例HomePageModal.STRIP_广告条幅:
View stripAdview=LayoutInflater.from(parent.getContext())。充气(R.layout.strip\u ad\u layout,parent,false);
返回新的StripadBannerView文件夹(stripAdview);
案例HomePageModal.HORIZONTAL\u产品\u视图:
View horizontalProductView=LayoutFlater.from(parent.getContext())。充气(R.layout.horizontal\u scroll\u布局,parent,false);
返回新的HorizontalProductViewholder(horizontalProductView);
案例HomePageModal.GRID\u产品\u视图:
View gridProductView=LayoutInflater.from(parent.getContext()).flate(R.layout.grid\u product\u layout,parent,false);
返回新的GridProductViewholder(gridProductView);
违约:
返回null;
}
}
@凌驾
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder,int位置){
开关(homePageModalList.get(position.getType()){
案例HomePageModal.BANNER_滑块:
List sliderModelList=homePageModalList.get(position.getSliderModelList();
((横幅滑架)支架)。收起滑架滑架(滑架模型);
打破
案例HomePageModal.STRIP_广告条幅:
int resource=homePageModalList.get(position.getResource();
String color=homePageModalList.get(position.getBackgroundColor();
((StripAdBannerViewHolder)支架)。设置TripAD(资源,颜色);
打破
案例HomePageModal.HORIZONTAL\u产品\u视图:
String HorizontalLayouttitle=homePageModalList.get(position.getTitle();
ListhorizontalProductScrollModelList=homePageModalList.get(position.getHorizontalProductScrollModelList();
((HorizontalProductViewholder)holder)。设置HorizontalProductLayout(horizontalProductScrollModelList,HorizontalLayouttitle);
打破
案例HomePageModal.GRID\u产品\u视图:
String GridLayouttitle=homePageModalList.get(position.getTitle();
ListgridProductScrollModelList=homePageModalList.get(position.getHorizontalProductScrollModelList();
(GridProductViewholder)holder.setGridLayout(gridProductScrollModelList,GridLayouttitle);
打破
违约:
返回;
}
}
@凌驾
public int getItemCount(){
返回homePageModalList.size();
}
///滑块列表
公共类横幅LiderViewHolder扩展了RecyclerView.ViewHolder{
私人浏览页面横幅LiderViewPage;
私有int currentpage=2;
私人定时器;
专用最终长延迟时间=3000;
私人最终长周期_时间=3000;
公共横幅liderviewholder(@NonNull View itemView){
超级(项目视图);
BannerSliderViewPage=itemView.findViewById(R.id.banner\u slider\u viewpager);
}
私有void SetBannerSliderViewPage(最终列表SliderModelList){
SliderAdapter SliderAdapter=新的SliderAdapter(sliderModelList);
BannerSliderViewPage.setAdapter(sliderAdapter);**我在这一行遇到错误**
BannerSliderViewPage.setClipToPadding(false);
bannersliderViewpager.setPageMargin(20);
BannerSliderViewPage.setCurrentItem(当前页面);
ViewPager.OnPageChangeListener OnPageChangeListener=新建ViewPager.OnPageChangeListener(){
@凌驾
已滚动页面上的公共无效(int-position、float-positionOffset、int-positionOffsetPixels){
}
@凌驾
已选择页面上的公共无效(内部位置){
当前页面=位置;
}
@凌驾
公共无效onPageScrollStateChanged(int状态){
package com.example.shift.adapter;
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.GridView;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.viewpager.widget.ViewPager;
import com.example.shift.R;
import com.example.shift.modal.HomePageModal;
import com.example.shift.modal.HorizontalProductScrollModel;
import com.example.shift.modal.sliderModel;
import org.jetbrains.annotations.NotNull;
import java.util.List;
import java.util.Timer;
import java.util.TimerTask;
public class HomePageAdapter extends RecyclerView.Adapter {
private List<HomePageModal> homePageModalList;
public HomePageAdapter(List<HomePageModal> homePageModalList) {
this.homePageModalList = homePageModalList;
}
@Override
public int getItemViewType(int position) {
switch (homePageModalList.get(position).getType()) {
case 0:
return HomePageModal.BANNER_SLIDER;
case 1:
return HomePageModal.STRIP_AD_BANNER;
case 2:
return HomePageModal.HORIZONTAL_PRODUCT_VIEW;
case 3:
return HomePageModal.GRID_PRODUCT_VIEW;
default:
return -1;
}
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
switch (viewType) {
case HomePageModal.BANNER_SLIDER:
View bannerSliderview = LayoutInflater.from(parent.getContext()).inflate(R.layout.slider_layout, parent, false);
return new BannerSliderViewHolder(bannerSliderview);
case HomePageModal.STRIP_AD_BANNER:
View stripAdview = LayoutInflater.from(parent.getContext()).inflate(R.layout.strip_ad_layout, parent, false);
return new StripAdBannerViewHolder(stripAdview);
case HomePageModal.HORIZONTAL_PRODUCT_VIEW:
View horizontalProductView = LayoutInflater.from(parent.getContext()).inflate(R.layout.horizontal_scroll_layout, parent, false);
return new HorizontalProductViewholder (horizontalProductView);
case HomePageModal.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 (homePageModalList.get(position).getType()) {
case HomePageModal.BANNER_SLIDER:
List<sliderModel> sliderModelList = homePageModalList.get(position).getSliderModelList();
((BannerSliderViewHolder) holder).setBannersliderViewpager(sliderModelList);
break;
case HomePageModal.STRIP_AD_BANNER:
int resource = homePageModalList.get(position).getResource();
String color = homePageModalList.get(position).getBackgroundColor();
((StripAdBannerViewHolder) holder).setStripAd(resource, color);
break;
case HomePageModal.HORIZONTAL_PRODUCT_VIEW:
String HorizontalLayouttitle =homePageModalList.get(position).getTitle();
List<HorizontalProductScrollModel>horizontalProductScrollModelList =homePageModalList.get(position).getHorizontalProductScrollModelList();
((HorizontalProductViewholder) holder).setHorizontalProductLayout(horizontalProductScrollModelList,HorizontalLayouttitle);
break;
case HomePageModal.GRID_PRODUCT_VIEW:
String GridLayouttitle =homePageModalList.get(position).getTitle();
List<HorizontalProductScrollModel>gridProductScrollModelList =homePageModalList.get(position).getHorizontalProductScrollModelList();
((GridProductViewholder) holder).setGridLayout(gridProductScrollModelList,GridLayouttitle);
break;
default:
return;
}
}
@Override
public int getItemCount() {
return homePageModalList.size();
}
/// Slider List
public class BannerSliderViewHolder extends RecyclerView.ViewHolder {
private ViewPager bannersliderViewpager;
private int currentpage = 2;
private Timer timer;
private final long DELAY_TIME = 3000;
private final long PERIOD_TIME = 3000;
public BannerSliderViewHolder(@NonNull View itemView) {
super(itemView);
bannersliderViewpager = itemView.findViewById(R.id.banner_slider_viewpager);
}
private void setBannersliderViewpager(final List<sliderModel>sliderModelList){
SliderAdapter sliderAdapter = new SliderAdapter(sliderModelList);
bannersliderViewpager.setAdapter(sliderAdapter); **I am getting error at this line **
bannersliderViewpager.setClipToPadding(false);
bannersliderViewpager.setPageMargin(20);
bannersliderViewpager.setCurrentItem(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(sliderModelList);
}
}
};
bannersliderViewpager.addOnPageChangeListener(onPageChangeListener);
startBannerSlideshow(sliderModelList);
bannersliderViewpager.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
PageLooper(sliderModelList);
stopBannerSlideshow();
if(event.getAction()==MotionEvent.ACTION_UP){
startBannerSlideshow(sliderModelList);
}
return false;
}
});
}
private void PageLooper(@NotNull 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(List<sliderModel> sliderModelList) {
Handler handler = new Handler();
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();
}
}
/// Strip Ad
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(int resource, String color) {
stripAdImage.setImageResource(resource);
stripAdContainer.setBackgroundColor(Color.parseColor(color));
}
}
/// Horizontal
public class HorizontalProductViewholder extends RecyclerView.ViewHolder{
private TextView horizontalLayoutTitle;
private Button horizontalviewAllbtn;
private RecyclerView horizontalrecyclerview;
public HorizontalProductViewholder(@NonNull View itemView) {
super(itemView);
horizontalLayoutTitle = itemView.findViewById(R.id.h_s_product_titile);
horizontalviewAllbtn = itemView.findViewById(R.id.horizontal_scroll_lt_viewAllbtn);
horizontalrecyclerview = itemView.findViewById(R.id.horizontal_scroll_lt_recyclerview);
}
private void setHorizontalProductLayout(@NotNull List<HorizontalProductScrollModel> horizontalProductScrollModelList, String title){
horizontalLayoutTitle.setText(title);
if(horizontalProductScrollModelList.size() >8 ){
horizontalviewAllbtn.setVisibility(View.VISIBLE);
}else{
horizontalviewAllbtn.setVisibility(View.INVISIBLE);
}
HorizontalProductScrollAdapter horizontalProductScrollAdapter = new HorizontalProductScrollAdapter(horizontalProductScrollModelList);
LinearLayoutManager linearLayoutManagerhorizontal = new LinearLayoutManager(itemView.getContext());
linearLayoutManagerhorizontal.setOrientation(LinearLayoutManager.HORIZONTAL);
horizontalrecyclerview.setLayoutManager(linearLayoutManagerhorizontal);
horizontalrecyclerview.setAdapter(horizontalProductScrollAdapter);
horizontalProductScrollAdapter.notifyDataSetChanged();
}
}
/// Grid Layout
public class GridProductViewholder extends RecyclerView.ViewHolder{
private TextView gridLayoutTitle;
private Button gridLayoutViewAllbtn;
private GridView gridView;
public GridProductViewholder(@NonNull View itemView) {
super(itemView);
TextView gridLayoutTitle = itemView.findViewById(R.id.grid_product_layout_titile);
Button gridLayoutViewAllbtn = itemView.findViewById(R.id.grid_product_layout_viewAlbtn);
GridView gridView = itemView.findViewById(R.id.grid_product_layout_gridView);
}
private void setGridLayout(List<HorizontalProductScrollModel>horizontalProductScrollAdapterList,String title){
gridLayoutTitle.setText(title);
gridView.setAdapter(new gridProductLayoutAdapter(horizontalProductScrollAdapterList));
}
}
}