Recycler视图中没有数据片段

问题描述 投票:0回答:1

我正在构建一个具有Tab布局的Android应用程序,其中包含片段,在Fragment中,我显示一些值。我只添加了硬编码值来测试布局,但是即使这些在片段中也不可见。

这是ViewPagerAdapter的代码:

public class FavouriteViewPagerAdapter extends FragmentPagerAdapter {

    private final List<Fragment> favouriteFragmentList = new ArrayList<>();
    private final List<String> favouriteFragmentListTitles = new ArrayList<>();


    public FavouriteViewPagerAdapter(@NonNull FragmentManager fm, int behavior) {
        super(fm, behavior);
    }

    @NonNull
    @Override
    public Fragment getItem(int position) {
        return favouriteFragmentList.get(position);
    }

    @Override
    public int getCount() {
        return favouriteFragmentListTitles.size();
    }

    @Nullable
    @Override
    public CharSequence getPageTitle(int position) {
        return favouriteFragmentListTitles.get(position);
    }

    public void AddFragment(Fragment fragment, String title) {
        favouriteFragmentList.add(fragment);
        favouriteFragmentListTitles.add(title);
    }
}

我已经尝试了可用的答案,但是没有一个可以解决我的问题。我调试了应用程序,我的RecyclerViewAdapter甚至都没有被调用,这很奇怪。我已经做了很多次,但从未发生过。这是我的RecyclerViewAdapter代码:

public class ProductsRecyclerAdapter extends RecyclerView.Adapter<ProductsRecyclerAdapter.viewHolder> {

    Context context;
    private List<FavouriteProducts> favouriteProductsData;

    public ProductsRecyclerAdapter(Context context, List<FavouriteProducts> favouriteProductsData) {
        this.context = context;
        this.favouriteProductsData = favouriteProductsData;
    }

    @NonNull
    @Override
    public viewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View v = LayoutInflater.from(context).inflate(R.layout.single_favourite_product_item, parent, false);
        viewHolder vHolder = new viewHolder(v);
        return vHolder;
    }

    @Override
    public void onBindViewHolder(@NonNull viewHolder holder, int position) {

        holder.product_name.setText(favouriteProductsData.get(position).getProduct_name());
        holder.product_price.setText(favouriteProductsData.get(position).getProduct_price());
        holder.product_image.setImageResource(favouriteProductsData.get(position).getProduct_image());
        Toast.makeText(context,favouriteProductsData.get(position).getProduct_price() , Toast.LENGTH_SHORT).show();
        /*holder.heart_button.setOnLikeListener(new OnLikeListener() {
            @Override
            public void liked(LikeButton likeButton) {
                showSuccessToast(context,"Liked");
            }

            @Override
            public void unLiked(LikeButton likeButton) {
                showSuccessToast(context,"Unliked");
            }
        });*/

    }

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

    static class viewHolder extends RecyclerView.ViewHolder {

        MaterialTextView product_name, product_price;
        ImageView product_image;
        LikeButton heart_button;

        public viewHolder(@NonNull View itemView) {
            super(itemView);
            product_name = itemView.findViewById(R.id.product_name);
            product_price = itemView.findViewById(R.id.product_price);
            product_image = itemView.findViewById(R.id.product_image);
            heart_button = itemView.findViewById(R.id.heart_button);

        }
    }
}

我没有收到任何错误,但是在检查适配器后甚至没有调用。一些帮助将非常有帮助。

片段代码:

public class FavouriteProductsFragment extends Fragment {

    View v;
    private List<FavouriteProducts> productList;

    public FavouriteProductsFragment() {
    }


    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        productList = new ArrayList<>();
        productList.add(new FavouriteProducts("All Weather", "200/Ltr", R.drawable.all_weather));
    }

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        v = inflater.inflate(R.layout.products_favourite_fragment, container, false);
        RecyclerView productRecyclerView = v.findViewById(R.id.favourite_products_rv);
        ProductsRecyclerAdapter recyclerAdapter = new ProductsRecyclerAdapter(getContext(), productList);
        productRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
        productRecyclerView.hasFixedSize();
        productRecyclerView.setAdapter(recyclerAdapter);
        return v;
    }

}
android android-fragments android-recyclerview android-tablayout
1个回答
0
投票

您需要添加

RecyclerView productRecyclerView = v.findViewById(R.id.favourite_products_rv);
ProductsRecyclerAdapter recyclerAdapter = new ProductsRecyclerAdapter(getContext(), productList);
productRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
productRecyclerView.hasFixedSize();
productRecyclerView.setAdapter(recyclerAdapter);
productList = new ArrayList<>();
productList.add(new FavouriteProducts("All Weather", "200/Ltr",R.drawable.all_weather));recyclerAdapter.notifyDataSetChanged()

并删除oncreate()方法

© www.soinside.com 2019 - 2024. All rights reserved.