마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

Attempt to invoke virtual method 'void android.widget.ImageView.setVisibility(int)' on a null object reference 오류

0 추천

제목과 같은 오류가 났는데 실제 오류는 

holder.mImgNew.setVisibility(isRead ? View.GONE : View.VISIBLE);

이 부분에서 났습니다. 검색을 좀 해봤는데 view 인스턴스화가 안되었다고 하는데 잘 모르겠네요..

글자수 제한 때문에 코드 전체를 입력 할 수 없어서 몇몇 코드는 제거 했습니다.

public class HomeRecyclerAdapter extends RecyclerView.Adapter<HomeRecyclerAdapter.ViewHolder> {

    private static final String TAG = "HomeRecyclerAdapter";
    private int itemLayout;

    private Context context;
    private ArrayList<NoticeItem> dataList;
    private int LIST_SIZE;

    public HomeRecyclerAdapter(Context context, int itemLayout) {
        this.context = context;
        this.itemLayout = itemLayout;
    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(itemLayout, parent, false);
        return new ViewHolder(view);
    }

    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        boolean isRead = data.isRead();
        holder.mImgNew.setVisibility(isRead ? View.GONE : View.VISIBLE);

    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public int getItemCount() {
        return LIST_SIZE;
    }

    static class ViewHolder extends RecyclerView.ViewHolder {
        private LinearLayout mItemBase;
        private ImageView mImgNew;
        private TextView mTxtTitle;
        private TextView mTxtWriter;
        private TextView mTxtTimeStamp;

        ViewHolder(View itemView) {
            super(itemView);
            mItemBase = itemView.findViewById(R.id.itemBase);
            mImgNew = itemView.findViewById(R.id.imgNew);
            mTxtTitle = itemView.findViewById(R.id.txtTitle);
            mTxtWriter = itemView.findViewById(R.id.txtWriter);
            mTxtTimeStamp = itemView.findViewById(R.id.txtTimeStamp);
        }
    }

}
ChanGooN (230 포인트) 님이 2019년 10월 11일 질문

1개의 답변

0 추천
 
채택된 답변
로그로는 holder 혹은 holder.mImgNew 값이 null로 설정 된 것으로 보입니다.

holder 가  null일 가능성은 거의 없을테니.. holder.mImgNew  값이 null이라는 의미이고,

mImgNew = itemView.findViewById(R.id.imgNew);  로 값 할당이 잘 못 된 것으로 생각됩니다.

imgNew 이름에  오타가 있는지 확인 해 보시는게 좋을 듯 합니다.
익명사용자 님이 2019년 10월 11일 답변
ChanGooN님이 2019년 12월 10일 채택됨
따로 오타는 보이지 않네요 ㅠ
답변해주셔서 감사합니다.
...