首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NullPointerException:尝试对null对象引用调用虚方法的空android.widget.ImageView.setImageResource(int)‘

NullPointerException:尝试对null对象引用调用虚方法的空android.widget.ImageView.setImageResource(int)‘
EN

Stack Overflow用户
提问于 2019-01-10 01:23:36
回答 1查看 217关注 0票数 0

我知道这个异常指出在imageLens管道的某些部分中有一个空对象,但不能精确地指出它。它向48行和setImageResource方法发送信号,但仍然不能修复它。我还查看了其他具有类似问题的问题,但无法将其应用于此特定代码。

这是出现错误的活动

代码语言:javascript
复制
    package com.komorebiestudio.cam_report_funcionality;

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 java.util.ArrayList;

public class LensAdapter extends RecyclerView.Adapter<LensAdapter.LensViewHolder> {
    private ArrayList<LensItem> mLensList;

    public static class LensViewHolder extends RecyclerView.ViewHolder{

        public ImageView mImageLens;
        public TextView mTextViewLens;
        public TextView mTextViewBrand;

        public LensViewHolder(View itemView) {
            super(itemView);
            mImageLens = itemView.findViewById(R.id.lensimage);
            mTextViewLens = itemView.findViewById(R.id.LensTextView);
            mTextViewBrand = itemView.findViewById(R.id.LensBrandTextView);
        }
    }

    //Constructor para ingresar la informacion del recycler al arraylist
    public LensAdapter(ArrayList<LensItem> lensList){
        mLensList = lensList;

    }

    //Crea el constructor para recibir la informacion del recyclerView
    @Override
    public LensViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.lens_activity, parent, false);
        LensViewHolder lvh = new LensViewHolder(v);
        return lvh;
    }

    //recibe la informacion del recycleView y la muestra el los TextViews correspondientes
    @Override
    public void onBindViewHolder(LensViewHolder holder, int position) {
        LensItem currentItem = mLensList.get(position);

        holder.mImageLens.setImageResource(currentItem.getImageLens());
        holder.mTextViewLens.setText(currentItem.getLens());
        holder.mTextViewBrand.setText(currentItem.getBrandLens());

    }

    //Define cuantos items hay en la lista, por default es 0, pero con el cambio por .size
    //es del tamaño del Array
    @Override
    public int getItemCount() {
        return mLensList.size();
    }
}

在这里,我声明了get方法

代码语言:javascript
复制
package com.komorebiestudio.cam_report_funcionality;

public class LensItem {
    private int mImageLens;
    private String mLens;
    private String mBrandLens;

    public LensItem( int imageLens, String lens, String brandLens){
        mImageLens = imageLens;
        mLens = lens;
        mBrandLens = brandLens;

    }

    public int getImageLens(){
        return mImageLens;
    }

    public String getLens() {
        return mLens;
    }

    public String getBrandLens() {
        return mBrandLens;
    }
}

这就是将它们加在一起的活动

代码语言:javascript
复制
    package com.komorebiestudio.cam_report_funcionality;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;

import java.util.ArrayList;

public class LensActivity extends AppCompatActivity {
    private RecyclerView mRecyclerView;
    private RecyclerView.Adapter mAdapter;
    private RecyclerView.LayoutManager mLayoutManager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.lens_activity);

        ArrayList <LensItem> lensItem = new ArrayList<>();
        lensItem.add(new LensItem(R.drawable.ic_camera,"24mm","Zeiss Compact Prime"));
        lensItem.add(new LensItem(R.drawable.ic_camera2,"35mm","Angenioux"));
        lensItem.add(new LensItem(R.drawable.ic_camera3,"50mm","Cooke S5I"));

        mRecyclerView = findViewById(R.id.lens_list);
        mRecyclerView.setHasFixedSize(true);
        mLayoutManager = new LinearLayoutManager(this);
        mAdapter = new LensAdapter(lensItem);

        mRecyclerView.setLayoutManager(mLayoutManager);
        mRecyclerView.setAdapter(mAdapter);
    }

}
EN

回答 1

Stack Overflow用户

发布于 2019-01-10 05:01:01

我发现了错误,我调用了错误的充气布局。具体地说,我调用的是RecyclerView布局,而应该调用的是CardView布局。

它应该看起来像这样。

代码语言:javascript
复制
//Crea el constructor para recibir la informacion del recyclerView
@Override
public LensViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.lens_list, parent, false);
    LensViewHolder lvh = new LensViewHolder(v);
    return lvh;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54115382

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档