从片段开始的底部工作表中的ViewPager

问题描述

你好,我想将viewpager放在一个从片段开始的底页中。 片段名称是HomeFragment,我做了模型和适配器类,但是不起作用。我认为解决方法是使用FragmentManager更改上下文。 有人可以帮我吗?

HOME_Fragment

public class HomeFragment extends Fragment {
private FloatingActionButton floatingActionButton;

ViewPager2 viewPager2;
List<CardModel> cardModelList;
ViewPagerAdapter adapter;

public View onCreateView(@NonNull LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState) {
    //homeViewModel = ViewModelProviders.of(this).get(HomeViewModel.class);

    View root = inflater.inflate(R.layout.fragment_home,container,false);

    //Inizio ViewPager


    viewPager2 = (ViewPager2) root.findViewById(R.id.viewPager);
    cardModelList = new ArrayList<>();

    cardModelList.add(new CardModel(R.drawable.starbucks,R.drawable.starbucks2,"Starbucks","Via del Corso 11","Cold Coffee Menu","Il menu di starbucks con cornetto caffè e cappuccino come sempre prova di descrizione","5 euro"));
    cardModelList.add(new CardModel(R.drawable.starbucks,"Starbucks 2","Via del Corso 22","Menu da portar via","2 euro"));
    cardModelList.add(new CardModel(R.drawable.starbucks,"Starbucks 3","Via del Corso 33","Menu 3","3 euro"));

    adapter = new ViewPagerAdapter(getParentFragment(),cardModelList);
    //attribuisce l'adapter al viewpager
    viewPager2.setAdapter(adapter);

    //Margine tra ogni card
    viewPager2.setPageTransformer(new MarginPageTransformer(100));
    //Fine ViewPager



    FloatingActionButton floatingActionButton = root.findViewById(R.id.floatingActionButton);
    floatingActionButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            BottomSheetDialog bottomSheetDialog = new BottomSheetDialog(
                    getContext(),R.style.BottomSheetDialogTheme);


            View bottomSheetView = LayoutInflater.from(getContext())
                    .inflate(
                            R.layout.layout_bottom_sheet,root.findViewById(R.id.bottom_sheet_container)
                    );

            bottomSheetView.findViewById(R.id.bottonechiusura).setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    bottomSheetDialog.dismiss();
                }
            });
            bottomSheetView.findViewById(R.id.bottoneAdd).setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Toast.makeText(getContext(),"Cliccato bottone add",Toast.LENGTH_SHORT).show(); //implementazione del bottone chiusura
                //TODO bottone add
                }
            });
            bottomSheetDialog.setContentView(bottomSheetView);
            bottomSheetDialog.show();
        }
    });

    //final TextView textView = root.findViewById(R.id.text_home);

    return root;
}

适配器:

public class ViewPagerAdapter extends RecyclerView.Adapter<ViewPagerAdapter.ViewPagerViewHolder> {

private Context context;
private List<CardModel> cardsAziende; //cards sono le aziende

public ViewPagerAdapter(Context context,List<CardModel> cardsAziende) {
    this.context = context;
    this.cardsAziende = cardsAziende;
}

@NonNull
@Override
public ViewPagerViewHolder onCreateViewHolder(@NonNull ViewGroup parent,int viewType) {
    LayoutInflater inflater = LayoutInflater.from(context);
    View layoutView = inflater.inflate(R.layout.card_layout,parent,false);

    return new ViewPagerViewHolder(layoutView);
}

@Override
public void onBindViewHolder(@NonNull ViewPagerViewHolder holder,int position) {
    holder.nomeAzienda.setText(cardsAziende.get(position).getNomeAzienda());
    holder.indirizzoAzienda.setText(cardsAziende.get(position).getIndirizzoAzienda());
    holder.descrizioneMenu.setText(cardsAziende.get(position).getDescrizioneMenu());
    holder.nomeMenu.setText(cardsAziende.get(position).getNomeMenu());
    holder.valoreCoupon.setText(cardsAziende.get(position).getValoreCoupon());

    holder.logoAzienda.setImageResource(cardsAziende.get(position).getLogoAzienda());
    holder.imgAzienda.setImageResource(cardsAziende.get(position).getImgAzienda());
}

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

class ViewPagerViewHolder extends RecyclerView.ViewHolder {

    ImageView logoAzienda;
    ImageView imgAzienda;
    TextView nomeAzienda;
    TextView indirizzoAzienda;
    TextView nomeMenu;
    TextView descrizioneMenu;
    TextView valoreCoupon;

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

        logoAzienda = itemView.findViewById(R.id.imageLogoAzienda);
        imgAzienda = itemView.findViewById(R.id.imageMenuAzienda);
        nomeAzienda = itemView.findViewById(R.id.textNomeAzienda);
        indirizzoAzienda = itemView.findViewById(R.id.textIndirizzoAzienda);
        nomeMenu = itemView.findViewById(R.id.textTipoMenu);
        descrizioneMenu = itemView.findViewById(R.id.textDescrizioneCoupon);
        valoreCoupon = itemView.findViewById(R.id.text_coupon);

    }
}

}

型号:

public class CardModel {

private int logoAzienda;
private int imgAzienda;
private String nomeAzienda;
private String indirizzoAzienda;
private String nomeMenu;
private String descrizioneMenu;
private String valoreCoupon;

public CardModel(int logoAzienda,int imgAzienda,String nomeAzienda,String indirizzoAzienda,String nomeMenu,String descrizioneMenu,String valoreCoupon) {
    this.logoAzienda = logoAzienda;
    this.imgAzienda = imgAzienda;
    this.nomeAzienda = nomeAzienda;
    this.indirizzoAzienda = indirizzoAzienda;
    this.nomeMenu = nomeMenu;
    this.descrizioneMenu = descrizioneMenu;
    this.valoreCoupon = valoreCoupon;
}

public int getLogoAzienda() {
    return logoAzienda;
}

public void setLogoAzienda(int logoAzienda) {
    this.logoAzienda = logoAzienda;
}

public int getImgAzienda() {
    return imgAzienda;
}

public void setImgAzienda(int imgAzienda) {
    this.imgAzienda = imgAzienda;
}

public String getNomeAzienda() {
    return nomeAzienda;
}

public void setNomeAzienda(String nomeAzienda) {
    this.nomeAzienda = nomeAzienda;
}

public String getIndirizzoAzienda() {
    return indirizzoAzienda;
}

public void setIndirizzoAzienda(String indirizzoAzienda) {
    this.indirizzoAzienda = indirizzoAzienda;
}

public String getNomeMenu() {
    return nomeMenu;
}

public void setNomeMenu(String nomeMenu) {
    this.nomeMenu = nomeMenu;
}

public String getDescrizioneMenu() {
    return descrizioneMenu;
}

public void setDescrizioneMenu(String descrizioneMenu) {
    this.descrizioneMenu = descrizioneMenu;
}

public String getValoreCoupon() {
    return valoreCoupon;
}

public void setValoreCoupon(String valoreCoupon) {
    this.valoreCoupon = valoreCoupon;
}

}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)