fragment 中 mRecyclerView.setLayoutManager()報錯
代碼是按照老師視頻來的,稍有改動
只是從MainActivity 變為Fragment
Fragment中 onCreateView代碼:
public?View?onCreateView(LayoutInflater?inflater,?ViewGroup?container, ???????????????????????????Bundle?savedInstanceState)?{ ????View?view?=?inflater.inflate(R.layout.fragment_fragment2, ????????????container,?false); ????initDatas(); ????mRecyclerView?=?view.findViewById(R.id.item2); ????mRVAdapter?=?new?RVAdapter(getActivity(),mData); ????mRecyclerView.setLayoutManager(new?LinearLayoutManager(getActivity(),LinearLayoutManager.VERTICAL,false)); ????mRecyclerView.setItemAnimator(new?DefaultItemAnimator()); ????mRecyclerView.setAdapter(mRVAdapter); ????mRecyclerView.addItemDecoration(new?DividerItemDecoration(getActivity(),DividerItemDecoration.VERTICAL)); ????return?view; }
adapter代碼:
public?class?RVAdapter?extends?RecyclerView.Adapter<MyViewHolder>?{ ????private?Context?context; ????private?List<String>?data; ????public?RVAdapter(Context?context?,?List<String>?data){ ????????this.context?=?context; ????????this.data?=?data; ????} ????@NonNull ????@Override ????public?MyViewHolder?onCreateViewHolder(@NonNull?ViewGroup?viewGroup,?int?i)?{?//創建ViewHolder ????????View?view?=?LayoutInflater.from?(viewGroup.getContext?()).inflate?(R.layout.item2,viewGroup,false); ????????MyViewHolder?viewHolder?=?new?MyViewHolder(view); ????????return?viewHolder; ????} ????@Override ????public?void?onBindViewHolder(@NonNull?MyViewHolder?holder,?int?pos)?{???//?綁定viewholder ????????holder.tv.setText(data.get(pos)); ????} ????@Override ????public?int?getItemCount()?{ ????????return?data.size(); ????} } class?MyViewHolder?extends?RecyclerView.ViewHolder{ ????TextView?tv; ????public?MyViewHolder(@NonNull?View?arg0)?{ ????????super(arg0); ????????tv?=?arg0.findViewById(R.id.item2); ????} }
2020-06-03
我和你一樣的問題,解決了,recycler的方法應該寫在這里面public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
//寫在這里
}
2020-02-27
我也遇到了和你差不多的問題,但不知道是不是一樣。你可以將xml文件中recyclerview的id改一下,然后再運行試試。有可能是AS自己的問題。