s드로이드
10
2020-05-23 18:06:05
2
80

안드로이드 recyclerview 질문입니다


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

public static class MyViewHolder extends RecyclerView.ViewHolder {
TextView name, age;

MyViewHolder(View view){
super(view);
name = view.findViewById(R.id.textView);
age = view.findViewById(R.id.textView2);
}
}

private ArrayList<Message> MessageArrayList;
MyAdapter(ArrayList<Message> MessageArrayList){
this.MessageArrayList = MessageArrayList;
}

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

View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.recycler_view_row, parent, false);

return new MyViewHolder(v);
}

@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {

MyViewHolder myViewHolder = (MyViewHolder) holder;

myViewHolder.name.setText(MessageArrayList.get(position).getName());
myViewHolder.age.setText(MessageArrayList.get(position).getAge());
}

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


java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String org.techtown.realtimedatabase4.Message.getName()' on a null object reference
        at org.techtown.realtimedatabase4.MyAdapter.onBindViewHolder(MyAdapter.java:43)

myViewHolder.name.setText(MessageArrayList.get(position).getName());

이부분에서 오류가 나는데 뭐떄문인지 모르겠습니다. 

초보에게 고견부탁드립니다. (_ _ )


0
0
  • 답변 2

  • devcrema
    968
    2020-05-23 18:15:13

    리스트에서 해당 포지션에 있는 객체가 null인데 getName()메서드를 호출하려 해서 나는 에러로 보이네요.

    예를들면 아래와 같은 null 체크가 필요해보입니다. 덤으로 리스트에서 null인 포지션을 요청한다면 사이즈가 잘 못 들어가거나 리스트에 제대로 객체가 들어가있지 않은 상황도 확인해보셔야 겠네요.

    if(MessageArrayList.get(position) != null) myViewHolder.name.setText(MessageArrayList.get(position).getName());
    2
  • s드로이드
    10
    2020-05-23 18:33:50
    해결했네요 ㅠ 너무너무 감사합니다 
    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.