想在Fragment里面添加一个RecyclerView 然后在初始化RecyclerView后 setAdapter一直报空指针异常

SawanoHiroyukinzk 2016-07-22 02:10:53
如题 初始化也做了 但是不知道是不是初始化的那个View是错误的 本人新手不太懂 下面是代码
Fragment
package com.lorentzos.flingswipe;

import android.app.Fragment;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.example.shall.tantandemo.R;
import com.lorentzos.swipecards.RecyclerAdapter;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
* Created by Sawano on 2016/7/16.
*/
public class FragmentOne extends Fragment {

private RecyclerView mRecyclerView;
LinearLayoutManager linearLayoutManager;
RecyclerAdapter mAdapter;
private List<Integer> mDatas;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {



View view = inflater.inflate(R.layout.fragment_one, container, false);
mRecyclerView = (RecyclerView)view.findViewById(R.id.recyclerView);

return view;
}


public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);

mDatas = new ArrayList<>(Arrays.asList(R.mipmap.back, R.mipmap.qiu, R.mipmap.img_1, R.mipmap.img_2,
R.mipmap.img_3, R.mipmap.img_4, R.mipmap.img_5, R.mipmap.img_6));

for(int i = 0; i < 15; i++) {
mDatas.add(i);

}

mAdapter = new RecyclerAdapter(this.getActivity(), mDatas);
Log.d("hhhh", "mRecyclerView="+mRecyclerView);
Log.d("hhhh", "mAdapter=" + mAdapter);

linearLayoutManager = new LinearLayoutManager(this.getActivity(), LinearLayoutManager.VERTICAL, false);
mRecyclerView.setLayoutManager(linearLayoutManager);
mRecyclerView.setAdapter(mAdapter);

}

}


这是Adapter

...全文
2461 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
flfCoder 2017-05-05
  • 打赏
  • 举报
回复
到底怎么解决
疯狂的兔子ccc 2016-10-09
  • 打赏
  • 举报
回复
你那里应该用 onViewCreated 这样执行顺序才对
哆余_ 2016-10-09
  • 打赏
  • 举报
回复
楼主解决了么?
SawanoHiroyukinzk 2016-07-22
  • 打赏
  • 举报
回复
引用 3 楼 zxb3121999 的回复:
你没搞明白fragment的生命周期吧。onActivityCreate执行的时候,你没还没执行onCreateView呢,这个时候你的recyclerview当然是空的了
执行孙玺难道不是这样么 求指正 新手不太懂 麻烦了
SawanoHiroyukinzk 2016-07-22
  • 打赏
  • 举报
回复
引用 2 楼 chunqiuwei 的回复:
mDatas = new ArrayList<>(Arrays.asList(R.mipmap.back, R.mipmap.qiu, R.mipmap.img_1, R.mipmap.img_2, R.mipmap.img_3, R.mipmap.img_4, R.mipmap.img_5, R.mipmap.img_6)); for(int i = 0; i < 15; i++) { mDatas.add(i); } 关键之这个,你把mDatas已经初始化了几个img,但是又添加个for循环,加入15个int类型的值做什么?
这个是先前还没改的 不好意思- -见笑了
zxb3121999 2016-07-22
  • 打赏
  • 举报
回复
你没搞明白fragment的生命周期吧。onActivityCreate执行的时候,你没还没执行onCreateView呢,这个时候你的recyclerview当然是空的了
郭梧悠 2016-07-22
  • 打赏
  • 举报
回复
mDatas = new ArrayList<>(Arrays.asList(R.mipmap.back, R.mipmap.qiu, R.mipmap.img_1, R.mipmap.img_2, R.mipmap.img_3, R.mipmap.img_4, R.mipmap.img_5, R.mipmap.img_6)); for(int i = 0; i < 15; i++) { mDatas.add(i); } 关键之这个,你把mDatas已经初始化了几个img,但是又添加个for循环,加入15个int类型的值做什么?
SawanoHiroyukinzk 2016-07-22
  • 打赏
  • 举报
回复
这是Adapter package com.lorentzos.swipecards; import android.content.Context; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import com.example.shall.tantandemo.R; import java.util.List; /** * Created by Sawano on 2016/7/17. */ public class RecyclerAdapter extends RecyclerView.Adapter<MyViewHolder>{ private LayoutInflater mInflater; private List<Integer> mDatas; public RecyclerAdapter(Context context, List<Integer> datas) { this.mDatas = datas; mInflater = LayoutInflater.from(context); } @Override public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = mInflater.inflate(R.layout.fragment_one, parent, false); MyViewHolder viewHolder = new MyViewHolder(view); return viewHolder; } public void onBindViewHolder(MyViewHolder holder, int position) { holder.imageView.setImageResource(mDatas.get(position)); } @Override public int getItemCount() { return mDatas.size(); } } class MyViewHolder extends RecyclerView.ViewHolder { ImageView imageView; TextView textView; public MyViewHolder(View itemView) { super(itemView); imageView = (ImageView) itemView.findViewById(R.id.frg_img); textView = (TextView) itemView.findViewById(R.id.frg_text); } } 报错的是FragmentOne里的mRecyclerView 我用Log.d测试说是mRecyclerView = null

80,471

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧