问题描述
你好,我想将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 (将#修改为@)