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自己的問題。