Sefi Caharon
Sefi Caharon

Reputation: 19

onBindViewHolder() recieves ''on a null object reference''

I am trying to run my app using Adapters and I am getting this error while doing that:

Mentioning that there are 3 adapters: ReviewsAdapter, StandupWithKey and VideoAdapter.

05-07 20:16:57.707 5326-5326/com.example.sefi.authenticationproject E/ReviewsAdapter: onBindViewHolder() >> 0 05-07 20:16:57.708 5326-5326/com.example.sefi.authenticationproject E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.sefi.authenticationproject, PID: 5326 java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference at com.example.sefi.authenticationproject.adapter.ReviewsAdapter.onBindViewHolder(ReviewsAdapter.java:48) at com.example.sefi.authenticationproject.adapter.ReviewsAdapter.onBindViewHolder(ReviewsAdapter.java:18) at android.support.v7.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:6482) at android.support.v7.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:6515) at android.support.v7.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline(RecyclerView.java:5458) at android.support.v7.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:5724) at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5563) at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5559) at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2229) at android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1556) at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1516) at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:608) at android.support.v7.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:3693) at android.support.v7.widget.RecyclerView.onMeasure(RecyclerView.java:3109) at android.view.View.measure(View.java:19734) at android.support.constraint.ConstraintLayout.internalMeasureChildren(ConstraintLayout.java:1210) at android.support.constraint.ConstraintLayout.onMeasure(ConstraintLayout.java:1550) at android.view.View.measure(View.java:19734) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6120) at android.widget.FrameLayout.onMeasure(FrameLayout.java:185) at android.view.View.measure(View.java:19734) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6120) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1464) at android.widget.LinearLayout.measureVertical(LinearLayout.java:758) at android.widget.LinearLayout.onMeasure(LinearLayout.java:640) at android.view.View.measure(View.java:19734) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6120) at android.widget.FrameLayout.onMeasure(FrameLayout.java:185) at com.android.internal.policy.DecorView.onMeasure(DecorView.java:687) at android.view.View.measure(View.java:19734) at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2271) at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1358) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1607) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1246) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6301) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:871) at android.view.Choreographer.doCallbacks(Choreographer.java:683) at android.view.Choreographer.doFrame(Choreographer.java:619) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:857) at android.os.Handler.handleCallback(Handler.java:751) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6077) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)

And this are my files:

ReviewsAdapter.java

public class ReviewsAdapter extends RecyclerView.Adapter<ReviewsAdapter.ReviewViewHolder> {

    private final String TAG = "ReviewsAdapter";

    private List<Review> reviewsList;

    public ReviewsAdapter(List<Review> reviewsList) {

        this.reviewsList = reviewsList;
    }

    @Override
    public ReviewViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

        Log.e(TAG,"onCreateViewHolder() >>");

        View itemView = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.activity_standup_details, parent, false);

        Log.e(TAG,"onCreateViewHolder() <<");
        return new ReviewViewHolder(parent.getContext(),itemView);
    }

    @Override
    public void onBindViewHolder(ReviewViewHolder holder, int position) {

        Log.e(TAG,"onBindViewHolder() >> " + position);

        Review review = reviewsList.get(position);

        holder.getUserMail().setText(review.getUserEmail());
        holder.getUserReview().setText(review.getUserReview());
        holder.getUserRating().setRating(review.getUserRating());

        Log.e(TAG,"onBindViewHolder() << "+ position);
    }


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

    public class ReviewViewHolder extends RecyclerView.ViewHolder {

        private TextView userReview;
        private TextView userMail;
        private RatingBar userRating;

        public ReviewViewHolder(Context context, View view) {

            super(view);
            userReview = (TextView) view.findViewById(R.id.user_review);
            userMail = (TextView) view.findViewById(R.id.user_mail);
            userRating = (RatingBar) view.findViewById(R.id.user_rating);
        }

        public TextView getUserReview() {
            return userReview;
        }

        public void setUserReview(TextView userReview) {
            this.userReview = userReview;
        }

        public TextView getUserMail() {
            return userMail;
        }

        public void setUserMail(TextView userMail) {
            this.userMail = userMail;
        }

        public RatingBar getUserRating() {
            return userRating;
        }

        public void setUserRating(RatingBar userRating) {
            this.userRating = userRating;
        }
    }
}

StandupDetails.java

public class StandupDetails extends Activity {

    public final String TAG = "StandupDetails";
    private Standup standup;
    private String key;
    private User user;

    private FloatingActionButton writeReview;
    private Button buyPlay;
    private MediaPlayer mediaPlayer;
    private RecyclerView recyclerViewStandupReviews;

    private DatabaseReference standupReviewsRef;

    private List<Review> reviewsList =  new ArrayList<>();

    private boolean standupWasPurchased;

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

        key = getIntent().getStringExtra("key");
        standup = getIntent().getParcelableExtra("standup");
        user = getIntent().getParcelableExtra("user");

        mediaPlayer = new MediaPlayer();
        mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);

        StorageReference thumbRef = FirebaseStorage
                .getInstance()
                .getReference()
                .child("thumbs/" + standup.getThumbImage());
        // Load the image using Glide
        thumbRef.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
            @Override
            public void onSuccess(Uri uri) {
                Glide.with(StandupDetails.this).load(uri)
                        .into((ImageView)findViewById(R.id.imageViewSong));
            }
        });
        ((TextView) findViewById(R.id.textViewName)).setText(standup.getName());
        buyPlay = ((Button) findViewById(R.id.buttonBuyPlay));

        buyPlay.setText("BUY $" + standup.getPrice());

        Iterator i = user.getMyStandups().iterator();
        while (i.hasNext()) {
            if (i.next().equals(key)) {
                standupWasPurchased = true;
                buyPlay.setText("PLAY");
                break;
            }
        }

        buyPlay.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                Log.e(TAG, "buyPlay.onClick() >> file=" + standup.getName());
                FirebaseUser fbUser = FirebaseAuth.getInstance().getCurrentUser();
                String info = fbUser.getProviderId();
                if (standupWasPurchased) {
                    Log.e(TAG, "buyPlay.onClick() >> Playing purchased standup");
                    //User purchased the standup so he can play it
                    playCurrentStandup(standup.getFile());

                }
                else{
                    Log.e(TAG, "buyPlay.onClick() >> Purchase the standup");
                    user.getMyStandups().add(key);
                    user.upgdateTotalPurchase(standup.getPrice());
                    DatabaseReference userRef = FirebaseDatabase.getInstance().getReference("Users");
                    userRef.child(FirebaseAuth.getInstance().getCurrentUser().getUid()).setValue(user);
                    standupWasPurchased = true;
                    buyPlay.setText("PLAY");
                }
                Log.e(TAG, "playStandup.onClick() <<");
            }
        });

        writeReview = (FloatingActionButton) findViewById(R.id.buttonNewReview);
        writeReview.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Log.e(TAG, "writeReview.onClick() >>");

                Intent intent = new Intent(getApplicationContext(),ReviewActivity.class);
                intent.putExtra("standup", standup);
                intent.putExtra("key", key);
                intent.putExtra("user",user);

                startActivity(intent);
                finish();

                Log.e(TAG, "writeReview.onClick() <<");

            }
        });
        recyclerViewStandupReviews = findViewById(R.id.standup_reviews);
        recyclerViewStandupReviews.setHasFixedSize(true);
        recyclerViewStandupReviews.setLayoutManager(new LinearLayoutManager(getApplicationContext()));
        recyclerViewStandupReviews.setItemAnimator(new DefaultItemAnimator());


        ReviewsAdapter reviewsAdapter = new ReviewsAdapter(reviewsList);
        recyclerViewStandupReviews.setAdapter(reviewsAdapter);
        standupReviewsRef = FirebaseDatabase.getInstance().getReference("Standup/" + key +"/reviews");

        standupReviewsRef.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot snapshot) {

                Log.e(TAG, "onDataChange() >> Standup/" + key);

                for (DataSnapshot dataSnapshot : snapshot.getChildren()) {
                    Review review = dataSnapshot.getValue(Review.class);
                    reviewsList.add(review);
                }
                recyclerViewStandupReviews.getAdapter().notifyDataSetChanged();
                Log.e(TAG, "onDataChange(Review) <<");

            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

                Log.e(TAG, "onCancelled(Review) >>" + databaseError.getMessage());
            }
        });
        Log.e(TAG, "onCreate() <<");
    }

    @Override
    protected void onPause() {
        super.onPause();
        stopPlayingCurrentStandup();
    }

    private void playCurrentStandup(String standupFile) {

        Log.e(TAG, "playCurrentStandup() >> standupFile=" + standupFile);

        if (stopPlayingCurrentStandup()) {
            Log.e(TAG, "playCurrentStandup() << Stop playing current Standup");
            return;
        }

        FirebaseStorage.getInstance()
                .getReference("StandupsFile/" + standupFile)
                .getDownloadUrl()
                .addOnSuccessListener(new OnSuccessListener<Uri>() {
                    @Override
                    public void onSuccess(Uri downloadUrl) {
                        Log.e(TAG, "onSuccess() >> " + downloadUrl.toString());

                        try {
                            Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(downloadUrl.toString()));
                            intent.setDataAndType(Uri.parse(downloadUrl.toString()), "video/mp4");
                            startActivity(intent);
                            //mediaPlayer.setDataSource(downloadUrl.toString());
                            //mediaPlayer.prepare(); // might take long! (for buffering, etc)
                            //mediaPlayer.start();

                        } catch (Exception e) {
                            Log.w(TAG, "playStandup() error:" + e.getMessage());
                        }

                        Log.e(TAG, "onSuccess() <<");
                    }
                });
        Log.e(TAG, "playCurrentStandup() << ");
    }

    private boolean stopPlayingCurrentStandup() {

        if (mediaPlayer.isPlaying()) {
            Log.e(TAG, "onSuccess() >> Stop the media player");
            //Stop the media player
            mediaPlayer.stop();
            mediaPlayer.reset();
            buyPlay.setText("PLAY");
            return true;
        }
        return false;
    }

}

ReviewActivity

public class ReviewActivity extends AppCompatActivity {

    private final String TAG = "ReviewActivity";
    private Standup standup;
    private String key;
    private User user;
    private int prevRating = -1;

    private TextView userReview;
    private RatingBar userRating;
    private DatabaseReference standupRef;

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        Log.e(TAG, "onCreate() >>");

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_review);

        key = getIntent().getStringExtra("key");
        standup = getIntent().getParcelableExtra("standup");
        user = getIntent().getParcelableExtra("user");

        userReview = findViewById(R.id.new_user_review);
        userRating = findViewById(R.id.new_user_rating);

        standupRef = FirebaseDatabase.getInstance().getReference("Standup/" + key);

        standupRef.child("/reviews/" +  FirebaseAuth.getInstance().getCurrentUser().getUid()).
                addListenerForSingleValueEvent(new ValueEventListener() {
                    @Override
                    public void onDataChange(DataSnapshot snapshot) {

                        Log.e(TAG, "onDataChange(Review) >> " + snapshot.getKey());

                        Review review = snapshot.getValue(Review.class);
                        if (review != null) {
                            userReview.setText(review.getUserReview());
                            userRating.setRating(review.getUserRating());
                            prevRating = review.getUserRating();
                        }

                        Log.e(TAG, "onDataChange(Review) <<");

                    }

                    @Override
                    public void onCancelled(DatabaseError databaseError) {

                        Log.e(TAG, "onCancelled(Review) >>" + databaseError.getMessage());
                    }
                });
        Log.e(TAG, "onCreate() <<");
    }

    public void onSubmitClick(View v) {

        Log.e(TAG, "onSubmitClick() >>");


        standupRef.runTransaction(new Transaction.Handler() {

            @Override
            public Transaction.Result doTransaction(MutableData mutableData) {

                Log.e(TAG, "doTransaction() >>" );


                Standup standup = mutableData.getValue(Standup.class);

                if (standup == null ) {
                    Log.e(TAG, "doTransaction() << standup is null" );
                    return Transaction.success(mutableData);
                }

                if (prevRating == -1) {
                    // Increment the review count and rating only in case the user enters a new review
                    standup.incrementReviewCount();
                    standup.incrementRating((int)userRating.getRating());
                } else{
                    standup.incrementRating((int)userRating.getRating() - prevRating);
                }

                mutableData.setValue(standup);
                Log.e(TAG, "doTransaction() << standup was set");
                return Transaction.success(mutableData);

            }

            @Override
            public void onComplete(DatabaseError databaseError, boolean committed, DataSnapshot dataSnapshot) {

                Log.e(TAG, "onComplete() >>" );

                if (databaseError != null) {
                    Log.e(TAG, "onComplete() << Error:" + databaseError.getMessage());
                    return;
                }

                if (committed) {
                    Review review = new Review(
                            userReview.getText().toString(),
                            (int)userRating.getRating(),
                            user.getEmail());

                    standupRef.child("/reviews/" + FirebaseAuth.getInstance().getCurrentUser().getUid()).setValue(review);
                }


                Intent intent = new Intent(getApplicationContext(),StandupDetails.class);
                intent.putExtra("standup", standup);
                intent.putExtra("key", key);
                intent.putExtra("user",user);
                startActivity(intent);
                finish();

                Log.e(TAG, "onComplete() <<" );
            }
        });



        Log.e(TAG, "onSubmitClick() <<");
    }

}

StandupPlayerMain.java

public class StandupPlayerMain extends Activity {

    private final String TAG = "StandUp Player Tag";
    private DatabaseReference allStandupRef;
    private DatabaseReference myUserRef;


    private List<StandupWithKey> standupList = new ArrayList<>();
    private GoogleSignInClient mGoogleSignInClient;

    private RecyclerView recyclerView;
    private VideoAdapter standupAdapter;
    private User myUser;
    private FirebaseAuth mAuth;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_standup_player_main);
        Log.e(TAG, "onCreate() >>");

        mAuth= FirebaseAuth.getInstance();

        recyclerView = (RecyclerView) findViewById(R.id.standups_list);
        recyclerView.setHasFixedSize(true);
        recyclerView.setLayoutManager(new LinearLayoutManager(getApplicationContext()));
        recyclerView.setItemAnimator(new DefaultItemAnimator());

        FirebaseUser fbUser = FirebaseAuth.getInstance().getCurrentUser();
        if (fbUser != null) {
            myUserRef = FirebaseDatabase.getInstance().getReference("Users/" + fbUser.getUid());
            myUserRef.addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot snapshot) {

                    Log.e(TAG, "onDataChange(User) >> " + snapshot.getKey());

                    myUser = snapshot.getValue(User.class);

                    getAllStandups();

                    Log.e(TAG, "onDataChange(User) <<");

                }

                @Override
                public void onCancelled(DatabaseError databaseError) {

                    Log.e(TAG, "onCancelled(Users) >>" + databaseError.getMessage());
                }
            });

            Log.e(TAG, "onCreate() <<");
        } else {
            getAllStandups();
        }

    }

    private void getAllStandups() {

        Log.e(TAG,"GET ALL STANDUPS >>");
        standupList.clear();
        standupAdapter = new VideoAdapter(standupList,myUser);
        recyclerView.setAdapter(standupAdapter);

        //getAllSongsUsingValueListenrs();
        getAllVideoUsingChildListenrs();
        Log.e(TAG,"GET ALL STANDUPS <<");
    }

    private void getAllVideoUsingChildListenrs() {

        allStandupRef = FirebaseDatabase.getInstance().getReference("Standup");

        allStandupRef.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot snapshot) {

                Log.e(TAG, "onDataChange(Standup) >> " + snapshot.getKey());

                updateStandupList(snapshot);

                Log.e(TAG, "onDataChange(Standup) <<");

            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

                Log.e(TAG, "onCancelled(Songs) >>" + databaseError.getMessage());
            }
        });
    }
    private void getAllSongsUsingChildListenrs() {

        allStandupRef = FirebaseDatabase.getInstance().getReference("Standup");

        allStandupRef.addChildEventListener(new ChildEventListener() {
            @Override
            public void onChildAdded(DataSnapshot snapshot, String previousChildName){

                Log.e(TAG, "onChildAdded(Standup) >> " + snapshot.getKey());

                StandupWithKey standupwithKey = new StandupWithKey(snapshot.getKey(),snapshot.getValue(Standup.class));
                standupList.add(standupwithKey);
                recyclerView.getAdapter().notifyDataSetChanged();

                Log.e(TAG, "onChildAdded(Standup) <<");

            }
            @Override
            public void onChildChanged(DataSnapshot snapshot, String previousChildName){

                Log.e(TAG, "onChildChanged(Standup) >> " + snapshot.getKey());

                Standup standup = snapshot.getValue(Standup.class);
                String key = snapshot.getKey();

                for (int i = 0 ; i < standupList.size() ; i++) {
                    StandupWithKey standupWithKey = (StandupWithKey) standupList.get(i);
                    if (standupWithKey.getKey().equals(snapshot.getKey())) {
                        standupWithKey.setStandup(standup);
                        recyclerView.getAdapter().notifyDataSetChanged();
                        break;
                    }
                }

                Log.e(TAG, "onChildChanged(Standup) <<");

            }
            @Override
            public void onChildMoved(DataSnapshot snapshot, String previousChildName){

                Log.e(TAG, "onChildMoved(Standup) >> " + snapshot.getKey());


                Log.e(TAG, "onChildMoved(Standup) << Doing nothing");

            }
            @Override
            public void onChildRemoved(DataSnapshot snapshot){

                Log.e(TAG, "onChildRemoved(Standup) >> " + snapshot.getKey());

                Standup standup =snapshot.getValue(Standup.class);
                String key = snapshot.getKey();

                for (int i = 0 ; i < standupList.size() ; i++) {
                    StandupWithKey standupwithKey = (StandupWithKey) standupList.get(i);
                    if (standupwithKey.getKey().equals(snapshot.getKey())) {
                        standupList.remove(i);
                        recyclerView.getAdapter().notifyDataSetChanged();
                        Log.e(TAG, "onChildRemoved(Standup) >> i="+i);
                        break;
                    }
                }

                Log.e(TAG, "onChildRemoved(Standup) <<");

            }
            @Override
            public void onCancelled(DatabaseError databaseError) {

                Log.e(TAG, "onCancelled(Standup) >>" + databaseError.getMessage());
            }
        });
    }
    private void updateStandupList(DataSnapshot snapshot) {


        for (DataSnapshot dataSnapshot : snapshot.getChildren()) {
            Standup standup = dataSnapshot.getValue(Standup.class);
            Log.e(TAG, "updateStandupList() >> adding standup: " + standup.getName());
            String key = dataSnapshot.getKey();
            standupList.add(new StandupWithKey(key,standup));
        }
        recyclerView.getAdapter().notifyDataSetChanged();

    }

    public void onSignOutClick(View V) {
        Log.e(TAG, "onSignOutClick() >>");

        logOutFromGoogleAccount();

        LoginManager.getInstance().logOut();

        mAuth.signOut();

        Intent intent = new Intent(StandupPlayerMain.this,LogInActivity.class);
        startActivity(intent);

        Log.e(TAG, "onSignOutClick() <<");

    }

    private void logOutFromGoogleAccount()
    {
        Log.e(TAG, "logOutFromGoogleAccount() >>");

        GoogleSignInOptions gso = new GoogleSignInOptions
                .Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                .requestIdToken(getString(R.string.default_web_client_id))
                .requestProfile()
                .requestEmail()
                .build();

        // Build a GoogleSignInClient with the options specified by gso.
        mGoogleSignInClient = GoogleSignIn.getClient(this, gso);

        mGoogleSignInClient.signOut();
        Log.e(TAG, "logOutFromGoogleAccount() <<");
    }

    public void onSearchButtonClick(View v) {

        String searchString = ((EditText)findViewById(R.id.edit_text_search_standup)).getText().toString();
        String orderBy = ((RadioButton)findViewById(R.id.radioButtonByReviews)).isChecked() ? "reviewsCount" : "price";
        Query searchStandup;

        Log.e(TAG, "onSearchButtonClick() >> searchString="+searchString+ ",orderBy="+orderBy);

        standupList.clear();

        if (searchString != null && !searchString.isEmpty()) {
            searchStandup = allStandupRef.orderByChild("name").startAt(searchString).endAt(searchString + "\uf8ff");
        } else {
            searchStandup = allStandupRef.orderByChild(orderBy);
        }


        searchStandup.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot snapshot) {

                Log.e(TAG, "onDataChange(Query) >> " + snapshot.getKey());

                updateStandupList(snapshot);

                Log.e(TAG, "onDataChange(Query) <<");

            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

                Log.e(TAG, "onCancelled() >>" + databaseError.getMessage());
            }

        });
        Log.e(TAG, "onSearchButtonClick() <<");
    }
    public void onRadioButtonCLick(View v) {
        switch (v.getId()) {
            case R.id.radioButtonByPrice:
                ((RadioButton)findViewById(R.id.radioButtonByReviews)).setChecked(false);
                break;
            case R.id.radioButtonByReviews:
                ((RadioButton)findViewById(R.id.radioButtonByPrice)).setChecked(false);
                break;
        }
    }
}

Upvotes: 0

Views: 2598

Answers (2)

DIRTY DAVE
DIRTY DAVE

Reputation: 2731

If you're using Butterknife inside your RecyclerAdapter this is the correct way to bind the ViewHolder

public ViewHolder(@NonNull View itemView) {
            super(itemView);
            ButterKnife.bind(this, itemView);
}

If you don't use this it will throw the error.

Upvotes: 0

Levi Moreira
Levi Moreira

Reputation: 11995

You're using the same layout for the StandupDetails activity and the recycler list item: activity_standup_details.xml

setContentView(R.layout.activity_standup_details);

View itemView = LayoutInflater.from(parent.getContext())
        .inflate(R.layout.activity_standup_details, parent, false);

You probably want to use different layouts. Because of that your findViewById in the view holder are returning null and that's why you're getting an NPE.

Upvotes: 6

Related Questions