фрагмент не отображает recyclerview

232
24 декабря 2017, 09:04

добрый вечер, не могу понять почему во фрагменте не отображается recyclerview. если надо код скину

public class CategoriesAdapter extends RecyclerView.Adapter<CategoriesAdapter.CategoriesViewHolder> {
    private ArrayList<Category> categoryList;
    private onCategoriesPositionClick onCategoriesPositionClick;
    public CategoriesAdapter (ArrayList<Category>categoriesList, onCategoriesPositionClick onCategoriesPositionClick){
        this.categoryList = categoriesList;
        this.onCategoriesPositionClick = onCategoriesPositionClick;
    }
    @Override
    public CategoriesViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.card_categories, null);
        return new  CategoriesViewHolder (view);
    }
    @Override
    public void onBindViewHolder(CategoriesViewHolder holder, int position) {
        holder.category.setText(categoryList.get(position).getCategory());
        holder.image_ic.setImageResource(categoryList.get(position).getImage_ic());
    }
    @Override
    public int getItemCount() {
        return categoryList.size();
    }

     class CategoriesViewHolder extends RecyclerView.ViewHolder {
        TextView category;
        ImageView image_ic;
        LinearLayout linearlayout;
        public CategoriesViewHolder(View itemView) {
            super(itemView);
            category = (TextView)itemView.findViewById(R.id.Category);
            image_ic = (ImageView)itemView.findViewById(R.id.Image_ic);
            linearlayout = (LinearLayout) itemView.findViewById(R.id.Category_linearLayout);
            linearlayout.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    onCategoriesPositionClick.OnCategoriesClick(getAdapterPosition());
                }
            });
        }
    }
}
public class FragmentCategories extends Fragment {
// TODO: Rename parameter arguments, choose names that match
// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
private static final String ARG_Category = "param1";
// TODO: Rename and change types of parameters
private String mParam1;
private String mParam2;
RecyclerView.LayoutManager mLayoutManager;
private RecyclerView recyclerView;
private CategoriesAdapter categoriesAdapter;
ArrayList<Category>categoryList = new ArrayList<>();
private onCategoryPositionSelectedListener mListener;
public FragmentCategories() {
    // Required empty public constructor
}
/**
 * Use this factory method to create a new instance of
 * this fragment using the provided parameters.
 *
 * @return A new instance of fragment FragmentCategories.
 */
// TODO: Rename and change types and number of parameters
public static FragmentCategories newInstance(ArrayList<Category> categoryList) {
    FragmentCategories fragmentCategories = new FragmentCategories();
    Bundle args = new Bundle();
    args.putSerializable(ARG_Category,categoryList);
    fragmentCategories.setArguments(args);
    return fragmentCategories;
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setRetainInstance(true);
    if (getArguments() != null)
        categoryList = (ArrayList<Category>) getArguments().getSerializable(ARG_Category);
}
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_categories, container, false);
         recyclerView = view.findViewById(R.id.rv_categories);
         recyclerView.setHasFixedSize(true);
         categoriesAdapter = new CategoriesAdapter(categoryList, new onCategoriesPositionClick() {
             @Override
             public void OnCategoriesClick(int position) {
                 mListener.onCategoryPositionClick(position);
             }
            });
        LinearLayoutManager llm = new LinearLayoutManager(getActivity());
            recyclerView.setLayoutManager(llm);
            recyclerView.setAdapter(categoriesAdapter);
            return view;
        }

@Override
public void onAttach(Context context) {
    super.onAttach(context);
    if (context instanceof onCategoryPositionSelectedListener) {
        mListener = (onCategoryPositionSelectedListener) context;
    } else {
        throw new RuntimeException(context.toString()
                + " must implement OnFragmentInteractionListener");
    }
}

@Override
public void onDetach() {
    super.onDetach();
    mListener = null;
}
    public interface onCategoryPositionSelectedListener {
        // TODO: Update argument type and name
        void onCategoryPositionClick(int position);
    }
}
Answer 1

Вы неправильно инфлейтите разметку в onCreateViewHolder Надо так:

View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.card_categories, parent, false);

Почему так?

Сейчас вы передаете в качестве контейнера null. Поэтому ваша View не прикрепляется к нему. В onCreateViewHolder приходит контейнер, к нему и надо подключить вашу View

READ ALSO
Как правильно пользоваться Elevation и Translation Z

Как правильно пользоваться Elevation и Translation Z

Помогите разобраться, с этими свойствамиРазницу я понял elevation - это базовая глубина view, а translation z - это динамическая переменная, и используется...

239
Сервер не на localhost

Сервер не на localhost

Как сделать так, чтобы сервер был виден user, который подключен к другой сети, но к общей глобальной? В одной локальной сервер я открываю на localhostПытался...

218
Java - Метод хорд

Java - Метод хорд

Суть задания: Найти методом хорд корни уравнения f(x)=g(x)Где f -полином, а g- набор точек(которая интерполируется полиномами лагранжа)

852
what programming [требует правки]

what programming [требует правки]

I think that in the future will be real? Web programmer or? Where wages on the job above? It's better to Learn HTML and CSS, PHP or java, Python, C and C#? And advise books in the languages of your choice

242