gpt4 book ai didi

Android 将列表从 fragment 传递到 viewPagerAdapter

转载 作者:行者123 更新时间:2023-11-29 02:23:05 26 4
gpt4 key购买 nike

fragment :-

public class HomeProductFragment extends Fragment implements ActionBar.TabListener {

private List<String> data = new ArrayList<>();

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

view = inflater.inflate(R.layout.fragment_home_product, container, false);


userService = ApiUtils.getUserService();
Call<ProductCategoryDetails> callCategory = userService.getProductCategoryJSON();
callCategory.enqueue(new Callback<ProductCategoryDetails>() {
@Override
public void onResponse(Call<ProductCategoryDetails> call, Response<ProductCategoryDetails> response) {
try {
if (response.body() != null && response.body().getData() != null) {
for(int j = 0;j<response.body().getData().getCategories().size();j++) {
productCategory = response.body().getData().getCategories().get(j).getMainCategory();
data.add(productCategory);
}
Log.d("SET321","==set=="+data);
viewPager = (ViewPager) view.findViewById(R.id.viewpager);
viewPagerAdapter = new ViewPagerAdapter(getFragmentManager());
viewPager.setAdapter(viewPagerAdapter);
viewPagerAdapter.setData(data); <-----------

} else
Toast.makeText(getContext(), "Error!======" + response.code(), Toast.LENGTH_SHORT).show();
}catch (Exception e){
Log.d("TEST123","Exception");
}
}

@Override
public void onFailure(Call<ProductCategoryDetails> call, Throwable t) {
Log.d("TAG","FailedCat");
}
});

ViewPagerAdapter:-

private List<String> data;

public ViewPagerAdapter(FragmentManager manager) {
super(manager);
}

public void setData(List<String> data){
this.data = data;
}


@Override
public Fragment getItem(int position) {
return TabFragment.getInstance(position);
}

@Nullable
@Override
public CharSequence getPageTitle(int position) {
String[] stockArr = new String[data.size()];
return stockArr[position];
//return data.get(position);

}

@Override
public int getCount() {
String[] stockArr = new String[data.size()];
return stockArr.length;
//return data.size();
}

public int getItemPosition(Object object) {
String[] stockArr = new String[data.size()];
return stockArr.length;
//return data.size();
}
}

错误:

java.lang.NullPointerException: Attempt to invoke interface method 'int java.util.List.size()' on a null object reference at com.custom_adapters.ViewPagerAdapter.getCount(ViewPagerAdapter.java:43)

最佳答案

您的数据列表可以作为构造函数参数传递,即删除适配器中的 setData 方法并将构造函数设为

  ViewPagerAdapter(FragmentManager manager,List<String> data){
super(manager);
this.data = data;
}

关于Android 将列表从 fragment 传递到 viewPagerAdapter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54022881/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com