片段中的回收站未显示

时间:2020-02-10 04:33:27

标签: android-recyclerview fragment

我一直在制作一个在片段中使用回收站视图的应用程序。如何没有显示回收者视图的内容。我不确定自己做错了什么,因为该应用在运行时不会崩溃。请告诉我我需要做什么。

fragment_home.xml

    <?xml version="1.0" encoding="utf-8"?>
    <FrameLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"`enter code here`
        android:layout_height="match_parent"
        android:orientation="vertical"
        tools:context=".Fragments.Home_Fragment">


        <androidx.recyclerview.widget.RecyclerView
            android:id="@+id/cetagory_recyclerview"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@color/colorAccent"
            android:elevation="3dp" />

    </FrameLayout>

Home_Fragment.java

        private RecyclerView categoryRecyclerView;
        private CategoryAdapter categoryAdapter;

        public Home_Fragment() {
            // Required empty public constructor
        }

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle 
      savedInstanceState) {
            // Inflate the layout for this fragment
            View view = inflater.inflate(R.layout.fragment_home, container, false);

            categoryRecyclerView = view.findViewById(R.id.cetagory_recyclerview);
            LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity());
            layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
            categoryRecyclerView.setLayoutManager(layoutManager);

            List<CategoryModel> categoryModelList = new ArrayList<CategoryModel>();
            categoryModelList.add(new CategoryModel("Link","Home"));
            categoryModelList.add(new CategoryModel("Link","Electronicse"));
            categoryModelList.add(new CategoryModel("Link","Garments"));
            categoryModelList.add(new CategoryModel("Link","Fashion"));
            categoryModelList.add(new CategoryModel("Link","Toys"));
            categoryModelList.add(new CategoryModel("Link","Sporte"));
            categoryModelList.add(new CategoryModel("Link","Furniture"));
            categoryModelList.add(new CategoryModel("Link","Wall Art"));
            categoryModelList.add(new CategoryModel("Link","Appliance"));

            categoryAdapter = new CategoryAdapter(categoryModelList);
            categoryRecyclerView.setAdapter(categoryAdapter);
            categoryAdapter.notifyDataSetChanged();

            return view;
        }

CategoryModel.java

        private String categoryItemIconLink;
        private String categoryName;

        public CategoryModel(String categoryItemIconLink, String categoryName) {
            this.categoryItemIconLink = categoryItemIconLink;
            this.categoryName = categoryName;
        }

        public String getCategoryItemIconLink() {
            return categoryItemIconLink;
        }

        public void setCategoryItemIconLink(String categoryItemIconLink) {
            this.categoryItemIconLink = categoryItemIconLink;
        }

        public String getCategoryName() {
            return categoryName;
        }

        public void setCategoryName(String categoryName) {
            this.categoryName = categoryName;
        }

CategoryAdapter.java

        Context context;
        private List<CategoryModel> categoryModelList = new ArrayList<CategoryModel>();

        public CategoryAdapter(List<CategoryModel> categoryModerList) {
            this.context = context;
            this.categoryModelList = categoryModelList;
        }
        @NonNull
        @Override
        public CategoryAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int viewType) {

            View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.category_item, viewGroup, false);
            return new ViewHolder(view);
        }

        @Override
        public void onBindViewHolder(@NonNull CategoryAdapter.ViewHolder holder, int position) {

            String icon = categoryModelList.get(position).getCategoryItemIconLink();
            String name = categoryModelList.get(position).getCategoryName();
            holder.setCategoryName(name);
        }

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

        public class ViewHolder extends RecyclerView.ViewHolder {

            private ImageView categoryIcon;
            private TextView categoryName;

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

                categoryIcon = itemView.findViewById(R.id.category_item_icon);
                categoryName = itemView.findViewById(R.id.category_item_name);
            }

            private void setCategoryIcon() {
                //Todo: set categoryIcone here
            }

            private void  setCategoryName(String name) {
                categoryName.setText(name);
            }
        }

1 个答案:

答案 0 :(得分:0)

您尚未在适配器内初始化变量

替换此...

 public CategoryAdapter(List<CategoryModel> categoryModerList) {
            this.context = context;
            this.categoryModelList = categoryModelList;
        }

有了这个..

  public CategoryAdapter(Context context,List<CategoryModel> categoryModelList) {
        this.context = context;
        this.categoryModelList = categoryModelList;
    }

然后在片段中调用适配器的构造函数添加更改此行。 来自..

categoryAdapter = new CategoryAdapter(categoryModelList);

到..

categoryAdapter = new CategoryAdapter(getContext(),categoryModelList);