Adapter code
public class RVSelectAdapter extends RecyclerView.Adapter<RVSelectAdapter.ViewHolder> { ArrayList<itemList> list = new ArrayList<itemList>(); ArrayList<String> paths = new ArrayList<String>(); Context context; public RVSelectAdapter(ArrayList<itemList> list,ArrayList<String> paths,Context context) { this.list = list; this.context = context; this.paths = paths; } public static class ViewHolder extends RecyclerView.ViewHolder { CardView cv; CheckBox checkBox; ImageView open; LinearLayout remove; LinearLayout edit; LinearLayout upload; View view; RecyclerView recyclerView; LinearLayout linearLayoutDetails; boolean openBool; TextView textViewTag; ViewHolder(View itemView) { super(itemView); cv = (CardView) itemView.findViewById(R.id.card_view); checkBox = (CheckBox) itemView.findViewById(R.id.checkBox); open = (ImageView) itemView.findViewById(R.id.open); remove = (LinearLayout) itemView.findViewById(R.id.remove); edit = (LinearLayout) itemView.findViewById(R.id.edit); upload = (LinearLayout) itemView.findViewById(R.id.upload); recyclerView = (RecyclerView) itemView.findViewById(R.id.recycler_view); view = itemView; linearLayoutDetails = (LinearLayout) itemView.findViewById(R.id.CardDetail); openBool = false; textViewTag = (TextView) itemView.findViewById(R.id.textViewTag); } } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_select_card, parent, false); ViewHolder vh = new ViewHolder(v); return vh; } @Override public void onBindViewHolder(final ViewHolder holder, final int position) { holder.checkBox.setText(list.get(position).nameList); switch (list.get(position).Tag) { case "orph": holder.textViewTag.setText(context.getResources().getString(R.string.orph)); break; case "arif": holder.textViewTag.setText(context.getResources().getString(R.string.arif)); break; } LinearLayoutManager llm = new LinearLayoutManager(context); holder.recyclerView.setLayoutManager(llm); RVQuestionAdapter adapter = new RVQuestionAdapter(list.get(position).itemQuestions, context); holder.recyclerView.setAdapter(adapter); holder.open.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (holder.linearLayoutDetails.getVisibility() == View.GONE) { ExpandAndCollapce.expand(holder.linearLayoutDetails, 500); ObjectAnimator rotation = ObjectAnimator.ofFloat(v, "rotation", 180); rotation.setDuration(500); rotation.start(); } else { ExpandAndCollapce.collapse(holder.linearLayoutDetails, 500); ObjectAnimator rotation = ObjectAnimator.ofFloat(v, "rotation", 0); rotation.setDuration(500); rotation.start(); } } }); holder.remove.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { boolean res = new SaveAndLoad(context).remove(paths.get(position)); } }); holder.edit.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { context.startActivity(new Intent(context, AddElementActivity.class).putExtra("itemList", list.get(position)) .putExtra("path", paths.get(position))); } }); } @Override public int getItemCount() { return list.size(); } @Override public void onAttachedToRecyclerView(RecyclerView recyclerView) { super.onAttachedToRecyclerView(recyclerView); } int convertDpToPixels(float dp) { Resources resources = context.getResources(); return (int) TypedValue.applyDimension( TypedValue.COMPLEX_UNIT_DIP, dp, resources.getDisplayMetrics() ); } public static class RVQuestionAdapter extends RecyclerView.Adapter<RVQuestionAdapter.ViewHolder> { ArrayList<itemQuestion> itemQuestions; Context context; public RVQuestionAdapter(ArrayList<itemQuestion> itemQuestions, Context context) { this.itemQuestions = itemQuestions; this.context = context; } public static class ViewHolder extends RecyclerView.ViewHolder { CardView cv; TextView textViewAnswer; TextView textViewEvaluation; ViewHolder(View itemView) { super(itemView); cv = (CardView) itemView.findViewById(R.id.card_view); textViewAnswer = (TextView) itemView.findViewById(R.id.textViewAnswer); textViewEvaluation = (TextView) itemView.findViewById(R.id.textViewEvaluation); } } @Override public RVQuestionAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_select_answer, parent, false); ViewHolder vh = new ViewHolder(v); return vh; } @Override public void onBindViewHolder(ViewHolder holder, int position) { holder.textViewAnswer.setText(itemQuestions.get(position).question); holder.textViewEvaluation.setText(new GetEvaluation(itemQuestions.get(position), context.getResources()).Text()); } @Override public int getItemCount() { return itemQuestions.size(); } } }
Error log
08-02 18:16:28.722 26306-26306/ru.landmarkstd.educt E/AndroidRuntime: FATAL EXCEPTION: main Process: ru.landmarkstd.educt, PID: 26306 Theme: themes:{default=overlay:com.baranovgroup.nstyle, iconPack:com.baranovgroup.nstyle, fontPkg:com.baranovgroup.nstyle, com.android.systemui=overlay:com.baranovgroup.nstyle, com.android.systemui.navbar=overlay:com.baranovgroup.nstyle} java.lang.NullPointerException: Attempt to invoke virtual method 'int java.util.ArrayList.size()' on a null object reference at ru.landmarkstd.educt.Adapters.RVSelectAdapter.getItemCount(RVSelectAdapter.java:152) at android.support.v7.widget.RecyclerView.dispatchLayoutStep1(RecyclerView.java:3170) at android.support.v7.widget.RecyclerView.onMeasure(RecyclerView.java:2782) at android.view.View.measure(View.java:18799) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951) at android.widget.FrameLayout.onMeasure(FrameLayout.java:194) at android.view.View.measure(View.java:18799) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951) at android.widget.FrameLayout.onMeasure(FrameLayout.java:194) at android.view.View.measure(View.java:18799) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951) at android.widget.FrameLayout.onMeasure(FrameLayout.java:194) at android.support.v7.widget.CardView.onMeasure(CardView.java:208) at android.view.View.measure(View.java:18799) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951) at android.support.design.widget.CoordinatorLayout.onMeasureChild(CoordinatorLayout.java:669) at android.support.design.widget.HeaderScrollingViewBehavior.onMeasureChild(HeaderScrollingViewBehavior.java:89) at android.support.design.widget.AppBarLayout$ScrollingViewBehavior.onMeasureChild(AppBarLayout.java:1319) at android.support.design.widget.CoordinatorLayout.onMeasure(CoordinatorLayout.java:734) at android.view.View.measure(View.java:18799) at android.support.v4.widget.DrawerLayout.onMeasure(DrawerLayout.java:1079) at android.view.View.measure(View.java:18799) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951) at android.widget.FrameLayout.onMeasure(FrameLayout.java:194) at android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:135) at android.view.View.measure(View.java:18799) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1458) at android.widget.LinearLayout.measureVertical(LinearLayout.java:746) at android.widget.LinearLayout.onMeasure(LinearLayout.java:629) at android.view.View.measure(View.java:18799) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951) at android.widget.FrameLayout.onMeasure(FrameLayout.java:194) at android.view.View.measure(View.java:18799) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1458) at android.widget.LinearLayout.measureVertical(LinearLayout.java:746) at android.widget.LinearLayout.onMeasure(LinearLayout.java:629) at android.view.View.measure(View.java:18799) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951) at android.widget.FrameLayout.onMeasure(FrameLayout.java:194) at com.android.internal.policy.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2899) at android.view.View.measure(View.java:18799) at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2108) at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1224) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1460) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1115) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6023) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:858) at android.view.Choreographer.doCallbacks(Choreographer.java:670) at android.view.Choreographer.doFrame(Choreographer.java:606) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:844) at android.os.Handler.handleCal
list
, obviously the constructor is called withnull
, the problem is not in the adapter, but in the code where it is created. - zRrr