omu1004
142
2019-03-20 21:23:45
0
152

recyclerView 아이템 추가 에러 중간에 널값이 생기는 이유가 궁금합니다.


디비 값을 불러와서 리스트뷰에 값을 전달하고 있습니다. DB에서 결과 값은 잘 넘어옵니다 로그로 확인했는데.. 문제는 mArraylist.add <<<< 이부분에서 에러가 계속 나네요

초반에는 잘되다가 여러번 반복 테스트를하면 어플이 계속 저에러로 중단됩니다.

해결방법보다 이유라도 알고싶어서요 고수님들 조언 좀 부탁드립니다..!


**Adapter.class**

private ArrayList<Data> mList;
private Activity context = null;



public RecyclerAdapter(Activity context, ArrayList<Data> list) {
this.context = context;
this.mList = list;
}

class CustomViewHolder extends RecyclerView.ViewHolder {
protected TextView top;
protected TextView middle;
protected TextView bottom;
protected LinearLayout linear;


public CustomViewHolder(View view) {
super(view);
this.top = (TextView) view.findViewById(R.id.textView1);
this.middle = (TextView) view.findViewById(R.id.textView2);
this.bottom = (TextView) view.findViewById(R.id.textView3);
this.linear = view.findViewById(R.id.item_linear);
}
}


@Override
public CustomViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {
View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item, null);
CustomViewHolder viewHolder = new CustomViewHolder(view);

return viewHolder;
}

@Override
public void onBindViewHolder(@NonNull CustomViewHolder viewholder, final int position) {

Data data = mList.get(position);
viewholder.top.setText(mList.get(position).getTitle());
Log.d("이거뭔데 : ", mList.get(position).getTitle());
viewholder.middle.setText(mList.get(position).getMiddle());
Log.d("이거뭔데 : ", mList.get(position).getMiddle());
viewholder.bottom.setText(mList.get(position).getDesc());
Log.d("이거뭔데 : ", mList.get(position).getDesc());


** RecyclerView.class ** 

#. Error


Attempt to invoke virtual method 'boolean java.util.ArrayList.add(java.lang.Object)' on a null object reference

        at com.example.mr_system.Reservation_Confirm$2.onResponse(Reservation_Confirm.java:130)

private Callback callback = new Callback() {
@Override
public void onFailure(Call call, IOException e) {
Log.d("rrrr11 : ","콜백오류:"+e.getMessage());
}
@Override
public void onResponse(Call call, Response response) throws IOException {

try {
Calendar cal = Calendar.getInstance();
JSONArray jsonarr = new JSONArray(response.body().string());


for(int i=0; i<jsonarr.length(); i++) {
JSONObject jsonobj = jsonarr.getJSONObject(i);

Data data = new Data();
Log.d("For문 시작!!! ", "---Start---");

Log.d("서버로 부터 받은 json " + i + "번째", "jsonobj : " + jsonobj);

String topData = jsonobj.getString("MR_Dept_TB_Dept_NO") + jsonobj.getString("MR_MtRoom_TB_MtRoom_NO") + "No. " + jsonobj.getString("MR_Info_NO") + " " + jsonobj.getString("MR_MtRoom_TB_MtRoom_NO") + "회의실 " + jsonobj.getString("mr_info_date") + " " + formatDayOfWeek +
jsonobj.getString("substr(MR_Info_Stime, 1, 5)") + " ~ " + jsonobj.getString("substr(MR_Info_Etime, 1,5)");
String midData = jsonobj.getString("MR_info_Attend");
String botData = jsonobj.getString("MR_Info_Content");
data.setTitle(topData);
data.setMiddleStr(midData);
data.setDesc(botData);
Log.d("Data : ", " " + topData);
Log.d("Data1: ", " " + midData);
Log.d("Data2: ", " " + botData);
mArrayList.add(data); <<- 이녀석이 에러납니다. 이유가 뭘까요?
}
adapter.notifyDataSetChanged(); <<- 가끔은 이녀석도 말썽입니다.
} catch (JSONException e) {
e.printStackTrace();
Log.d("rrrr22 : reser","콜백오류:"+e.getMessage());
}
}
};



0
0
  • 답변 0

  • 로그인을 하시면 답변을 등록할 수 있습니다.