Java 上下文不能为空

Java 上下文不能为空,java,android,Java,Android,当我尝试运行应用程序时,我在LogCat中得到了这个错误 java.lang.IllegalArgumentException:上下文不能为null 当我在类中添加毕加索代码时会发生这种情况 这里是adpater.Java 它说上下文为空,我读过其他帖子,但我找不到解决方案 public class Adapter extends RecyclerView.Adapter<Adapter.ViewHolder>{ private List<App> mApps; priv

当我尝试运行应用程序时,我在LogCat中得到了这个错误

java.lang.IllegalArgumentException:上下文不能为null

当我在类中添加毕加索代码时会发生这种情况

这里是adpater.Java

它说上下文为空,我读过其他帖子,但我找不到解决方案

public class Adapter extends RecyclerView.Adapter<Adapter.ViewHolder>{
private List<App> mApps;
private boolean mHorizontal;
private boolean mPager;
private Context mContext;


public Adapter(Context ctx, boolean horizontal, boolean pager, List<App> apps) {
    mHorizontal = horizontal;
    mApps = apps;
    mPager = pager;
    this.mContext=ctx;
}



    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {




        if (mPager) {
            return new ViewHolder(LayoutInflater.from(parent.getContext())
                    .inflate(R.layout.adaper_pager, parent, false));
        } else {
            return mHorizontal ? new ViewHolder(LayoutInflater.from(parent.getContext())
                    .inflate(R.layout.adapter, parent, false)) :
                    new ViewHolder(LayoutInflater.from(parent.getContext())
                            .inflate(R.layout.adapter_vertical, parent, false));
        }
    }

    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        App app = mApps.get(position);
        //holder.imageView.setImageResource(app.getDrawable());
        Picasso.with(mContext).load(app.getLink()).into(holder.imageView);
        holder.nameTextView.setText(app.getName());
        holder.ratingTextView.setText(String.valueOf(app.getRating()));

    }

    @Override
    public int getItemViewType(int position) {
        return super.getItemViewType(position);
    }

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



    public static class ViewHolder extends RecyclerView.ViewHolder {

        public ImageView imageView;
        public TextView nameTextView;
        public TextView ratingTextView;

        public ViewHolder(View itemView) {
            super(itemView);
            imageView = (ImageView) itemView.findViewById(R.id.igOne);
            nameTextView = (TextView) itemView.findViewById(R.id.nameTV);
            ratingTextView = (TextView) itemView.findViewById(R.id.rate);
        }

    }

}
公共类适配器扩展了RecyclerView.Adapter{
私人名单地图;
私有布尔mHorizontal;
私有布尔mPager;
私有上下文;
公共适配器(上下文ctx、布尔水平、布尔寻呼机、列表应用){
M水平=水平;
mApps=应用程序;
mPager=寻呼机;
this.mContext=ctx;
}
@凌驾
public ViewHolder onCreateViewHolder(视图组父级,int-viewType){
如果(百万帕){
返回新的ViewHolder(LayoutInflater.from(parent.getContext())
.充气(R.layout.adaper_pager,父项,false));
}否则{
返回mHorizontal?新的ViewHolder(LayoutInflater.from(parent.getContext())
.充气(右布局适配器,父级,假):
新的ViewHolder(LayoutInflater.from(parent.getContext())
.充气(R.layout.adapter_vertical,parent,false));
}
}
@凌驾
公共无效onBindViewHolder(ViewHolder,int位置){
App App=mApps.get(位置);
//holder.imageView.setImageResource(app.getDrawable());
将(app.getLink())加载到(holder.imageView)中;
holder.nameTextView.setText(app.getName());
holder.ratingTextView.setText(String.valueOf(app.getRating());
}
@凌驾
public int getItemViewType(int位置){
返回super.getItemViewType(位置);
}
@凌驾
public int getItemCount(){
返回mApps.size();
}
公共静态类ViewHolder扩展了RecyclerView.ViewHolder{
公共影像视图;
公共文本视图名称文本视图;
公共文本视图分级文本视图;
公共视图持有者(视图项视图){
超级(项目视图);
imageView=(imageView)itemView.findViewById(R.id.igOne);
nameTextView=(TextView)itemView.findViewById(R.id.nameTV);
ratingTextView=(TextView)itemView.findViewById(R.id.rate);
}
}
}
请帮忙。有人说这是因为imageView为空。我对此一无所知

main活动

public class MainActivity extends AppCompatActivity implements Toolbar.OnMenuItemClickListener {


    private static final String TAG = "MainActivity";
    private Context mContext = MainActivity.this;
    private static final int ACTIVITY_NUM = 0;


    public static final String ORIENTATION = "orientation";

    private RecyclerView mRecyclerView;
    private boolean mHorizontal;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Log.d(TAG, "OnCreate: Starting MainActivity");
        setupBottomNavigationView();


        mRecyclerView = (RecyclerView) findViewById(R.id.recyclerView);
        mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
        mRecyclerView.setHasFixedSize(true);

        if (savedInstanceState == null) {
            mHorizontal = true;
        } else {
            mHorizontal = savedInstanceState.getBoolean(ORIENTATION);
        }

        setupAdapter();

    }


    /**
     * Setup Bottom Navigation View
     */

    private void setupBottomNavigationView() {
        Log.d(TAG, "setupBottomNavigationView: Setting up Bottom Navigation View");
        BottomNavigationViewEx bottomNavigationViewEx = (BottomNavigationViewEx) findViewById(R.id.bottom_nav_bar);
        BottomNavigationViewHelper.setupBottomNavigationView(bottomNavigationViewEx);
        BottomNavigationViewHelper.enableNavigation(mContext, bottomNavigationViewEx);
        Menu menu = bottomNavigationViewEx.getMenu();
        MenuItem menuItem = menu.getItem(ACTIVITY_NUM);
        menuItem.setChecked(true);


    }

    public void click(View v) {
        Intent mIntent = null;
        switch (v.getId()) {
            case R.id.serve:
                mIntent = new Intent(this, SearchActivity.class);
                break;

            case R.id.imageButton2:
                mIntent = new Intent(this, SearchActivity.class);
                break;
        }
        startActivity(mIntent);
    }


    ///////////

    @Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putBoolean(ORIENTATION, mHorizontal);
    }

    private void setupAdapter() {
        List<App> apps = getApps();

        SnapAdapter snapAdapter = new SnapAdapter();
        if (mHorizontal) {
            snapAdapter.addSnap(new Snap(Gravity.CENTER_HORIZONTAL, "Snap Start", apps));
            snapAdapter.addSnap(new Snap(Gravity.START, "Snap Middle", apps));
            snapAdapter.addSnap(new Snap(Gravity.END, "Snap End", apps));
            snapAdapter.addSnap(new Snap(Gravity.CENTER, "Pager snap", apps));
        } else {
            snapAdapter.addSnap(new Snap(Gravity.CENTER_VERTICAL, "Snap center", apps));
            snapAdapter.addSnap(new Snap(Gravity.TOP, "Snap top", apps));
            snapAdapter.addSnap(new Snap(Gravity.BOTTOM, "Snap bottom", apps));
        }

        mRecyclerView.setAdapter(snapAdapter);
    }

    private List<App> getApps() {

        List<App> apps = new ArrayList<>();
        apps.add(new App("Google+", "http://uupload.ir/files/aud7_brickone.jpg", 4.6f));

        return apps;
    }

    @Override
    public boolean onMenuItemClick(MenuItem item) {

        return false;
    }


}
public类MainActivity扩展AppCompatActivity实现工具栏。OnMenuItemClickListener{
私有静态最终字符串TAG=“MainActivity”;
私有上下文mContext=MainActivity.this;
私有静态最终整数活动_NUM=0;
公共静态最终字符串方向=“方向”;
私人回收视图mRecyclerView;
私有布尔mHorizontal;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.d(标记“OnCreate:Starting MainActivity”);
setupBottomNavigationView();
mRecyclerView=(RecyclerView)findViewById(R.id.RecyclerView);
mRecyclerView.setLayoutManager(新的LinearLayoutManager(this));
mRecyclerView.setHasFixedSize(true);
如果(savedInstanceState==null){
mHorizontal=真;
}否则{
mHorizontal=savedInstanceState.getBoolean(方向);
}
setupAdapter();
}
/**
*设置底部导航视图
*/
私有void setupBottomNavigationView(){
Log.d(标记“setupBottomNavigationView:设置底部导航视图”);
BottomNavigationViewEx BottomNavigationViewEx=(BottomNavigationViewEx)findViewById(R.id.bottom\u导航条);
setupBottomNavigationView(bottomNavigationViewEx);
启用导航(mContext,BottomNavigationViewHelper);
Menu Menu=bottomNavigationViewEx.getMenu();
MenuItem MenuItem=menu.getItem(活动数量);
menuItem.setChecked(true);
}
公共作废点击(视图五){
Intent MINENT=null;
开关(v.getId()){
案例R.id.serve:
Minent=新意图(此,SearchActivity.class);
打破
案例R.id.imageButton2:
Minent=新意图(此,SearchActivity.class);
打破
}
星触觉;
}
///////////
@凌驾
SaveInstanceState上受保护的无效(束超出状态){
super.onSaveInstanceState(超出状态);
突出。布尔(方向,M水平);
}
私有void setupAdapter(){
List apps=getApps();
SnapAdapter SnapAdapter=新的SnapAdapter();
if(水平){
snapAdapter.addSnap(新快照(Gravity.CENTER_HORIZONTAL,“快照开始”,apps));
addSnap(新的Snap(Gravity.START,“Snap Middle”,apps));
addSnap(新的Snap(Gravity.END,“Snap END”,apps));
addSnap(新快照(Gravity.CENTER,“寻呼机快照”,apps));
}否则{
snapAdapter.addSnap(新捕捉(Gravity.CENTER_VERTICAL,“捕捉中心”,apps));
addSnap(新的Snap(Gravity.TOP,“Snap-TOP”,apps));
addSnap(新的Snap(Gravity.BOTTOM,“Snap-BOTTOM”,apps));
}
mRecyclerView.setAdapter(snapAdapter);
}
私有列表getApps(){
列表应用程序=新建ArrayList();
apps.add(新应用程序(“谷歌+”,”http://uupload.ir/files/aud7_brickone.jpg“,4.6f));
返回应用程序;
}
@凌驾
公共布尔onMenuItemClick(菜单项){
返回false;
}
}
SnapAdapter

public class SnapAdapter extends RecyclerView.Adapter<SnapAdapter.ViewHolder> implements GravitySnapHelper.SnapListener {

    public static final int VERTICAL = 0;
    public static final int HORIZONTAL = 1;
    private Context mContext;



    private ArrayList<Snap> mSnaps;
    // Disable touch detection for parent recyclerView if we use vertical nested recyclerViews
    private View.OnTouchListener mTouchListener = new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            v.getParent().requestDisallowInterceptTouchEvent(true);
            return false;
        }
    };

    public SnapAdapter() {
        mSnaps = new ArrayList<>();
    }

    public void addSnap(Snap snap) {
        mSnaps.add(snap);
    }

    @Override
    public int getItemViewType(int position) {
        Snap snap = mSnaps.get(position);
        switch (snap.getGravity()) {
            case Gravity.CENTER_VERTICAL:
                return VERTICAL;
            case Gravity.CENTER_HORIZONTAL:
                return HORIZONTAL;
            case Gravity.START:
                return HORIZONTAL;
            case Gravity.TOP:
                return VERTICAL;
            case Gravity.END:
                return HORIZONTAL;
            case Gravity.BOTTOM:
                return VERTICAL;
        }
        return HORIZONTAL;
    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = viewType == VERTICAL ? LayoutInflater.from(parent.getContext())
                .inflate(R.layout.adapter_snap_vertical, parent, false)
                : LayoutInflater.from(parent.getContext())
                .inflate(R.layout.adapter_snap, parent, false);

        if (viewType == VERTICAL) {
            view.findViewById(R.id.recycle_view).setOnTouchListener(mTouchListener);
        }

        return new ViewHolder(view);

    }

    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        Snap snap = mSnaps.get(position);
        holder.snapTextView.setText(snap.getText());

        if (snap.getGravity() == Gravity.START || snap.getGravity() == Gravity.END) {
            holder.recyclerView.setLayoutManager(new LinearLayoutManager(holder
                    .recyclerView.getContext(), LinearLayoutManager.HORIZONTAL, false));
            holder.recyclerView.setOnFlingListener(null);
            new GravitySnapHelper(snap.getGravity(), false, this).attachToRecyclerView(holder.recyclerView);
        } else if (snap.getGravity() == Gravity.CENTER_HORIZONTAL) {
            holder.recyclerView.setLayoutManager(new LinearLayoutManager(holder
                    .recyclerView.getContext(), snap.getGravity() == Gravity.CENTER_HORIZONTAL ?
                    LinearLayoutManager.HORIZONTAL : LinearLayoutManager.VERTICAL, false));
            holder.recyclerView.setOnFlingListener(null);
            new LinearSnapHelper().attachToRecyclerView(holder.recyclerView);
        } else if (snap.getGravity() == Gravity.CENTER) { // Pager snap
            holder.recyclerView.setLayoutManager(new LinearLayoutManager(holder
                    .recyclerView.getContext(), LinearLayoutManager.HORIZONTAL, false));
            holder.recyclerView.setOnFlingListener(null);
            new PagerSnapHelper().attachToRecyclerView(holder.recyclerView);
        } else { // Top / Bottom
            holder.recyclerView.setLayoutManager(new LinearLayoutManager(holder
                    .recyclerView.getContext()));
            holder.recyclerView.setOnFlingListener(null);
            new GravitySnapHelper(snap.getGravity()).attachToRecyclerView(holder.recyclerView);
        }


         holder.recyclerView.setAdapter(new Adapter(mContext, snap.getGravity() == Gravity.START
            || snap.getGravity() == Gravity.END
            || snap.getGravity() == Gravity.CENTER_HORIZONTAL,
            snap.getGravity() == Gravity.CENTER, snap.getApps()));
    }

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

    @Override
    public void onSnap(int position) {
        Log.d("Snapped: ", position + "");
    }

    public static class ViewHolder extends RecyclerView.ViewHolder {

        public TextView snapTextView;
        public RecyclerView recyclerView;

        public ViewHolder(View itemView) {
            super(itemView);
            snapTextView = (TextView) itemView.findViewById(R.id.snapTextView);
            recyclerView = (RecyclerView) itemView.findViewById(R.id.recycle_view);
        }

    }
}
公共类SnapAdapter扩展了RecyclerView。适配器实现了GravitySnapHelper.SnapListener{
公共静态最终整数垂直=0;
公共统计
java.lang.IllegalArgumentException: Context must not be null.
     private Context mContext;

    public Adapter(Context ctx,boolean horizontal, boolean pager, List<App> apps) {
        mHorizontal = horizontal;
        mApps = apps;
        mPager = pager;
        this.mContext=ctx; // Call here


}
new Adapter(Your_Activity.this, boolean, boolean , List<App>);
  Adapter  mAdapter = new Adapter (Youractivity_name.this, boolean, boolean , list);
 public Adapter(Context context ,boolean horizontal, boolean pager, List<App> apps) {
    mHorizontal = horizontal;
    mApps = apps;
    mPager = pager;
    mContext = context;
}