I hide an item in recycler view by using the code holder.itemView.setVisibility(View.GONE);
even though the item is hided it is leaving unwanted blank spaces, so for removing that space I had used holder.itemView.setLayoutParams(new RecyclerView.LayoutParams(0,0));
, but now my app is arashing. Can any one tell me why it is so ..Please see the code below
private void getEnquires(){
query=RootRef.child("Enquires");
// EnquiryModelClass is my model class
FirebaseRecyclerOptions<EnquiryModelClass> options =
new FirebaseRecyclerOptions.Builder<EnquiryModelClass>()
.setQuery(query,EnquiryModelClass.class)
.build();
FirebaseRecyclerAdapter<EnquiryModelClass,EnquiryListViewHolder> adapter
=new FirebaseRecyclerAdapter<EnquiryModelClass, EnquiryListViewHolder>(options) {
@Override
protected void onBindViewHolder(@NonNull EnquiryListViewHolder holder, int position, @NonNull EnquiryModelClass model) {
final String messageId = getRef(position).getKey();
RootRef.child("Enquires").child(messageId).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
final String returnBuyerIDs=snapshot.child("buyerId").getValue().toString(); // here I am fetching id of the person who send the enquiry from my database
holder.EnquiryMessage.setText("You have an enquiry on ");
holder.eqDate.setText( model.getDate());
holder.eqTime.setText(",at:"+ model.getTime());
holder.Viewmore.setText("ViewMore ");
holder.Viewmore.setOnClickListener(new View.OnClickListener() { // I had put a button in recycler view upon clicking on the item , it has to take me to next activity and hide current item
@Override
public void onClick(View v) {
Intent chatIntent = new Intent(getContext(), FirstReplyActivity.class); // video 46
chatIntent.putExtra("seller_id", SellerUserId);
chatIntent.putExtra("enquiry_message_id", messageId);
chatIntent.putExtra("buyer_user_id", returnBuyerIDs);//
chatIntent.putExtra("buyer_enquiry_message", model.getEnquiryMessage());//
chatIntent.putExtra("buyer_user_name", model.getCustomerName());
chatIntent.putExtra("enquiryDate", model.getDate());
chatIntent.putExtra("enquiryTime", model.getTime());
startActivity(chatIntent);
holder.itemView.setVisibility(View.GONE); //This I have used to hide item clicked
holder.itemView.setLayoutParams(new RecyclerView.LayoutParams(0,0)); //by writing this line my app is crashing
}
});
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
}
@NonNull
@Override
public EnquiryListViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int viewType) {
View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.enquirylist_layout_for_recycler, viewGroup, false);
EnquiryListViewHolder viewHolder = new EnquiryListViewHolder(view);
return viewHolder;
}
};
EnqList10km.setAdapter(adapter);
adapter.startListening();
}
crash log 2021-06-04 00:09:21.300 22003-22003/com.example.bet4best E/RecyclerView: No adapter attached; skipping layout 2021-06-04 00:09:25.175 22003-22003/com.example.bet4best E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.bet4best, PID: 22003 java.lang.NullPointerException: Attempt to invoke virtual method 'boolean androidx.recyclerview.widget.RecyclerView$ViewHolder.shouldIgnore()' on a null object reference at androidx.recyclerview.widget.RecyclerView.findMinMaxChildLayoutPositions(RecyclerView.java:4311) at androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep1(RecyclerView.java:4045) at androidx.recyclerview.widget.RecyclerView.dispatchLayout(RecyclerView.java:3849) at androidx.recyclerview.widget.RecyclerView.onLayout(RecyclerView.java:4404) at android.view.View.layout(View.java:24475) at android.view.ViewGroup.layout(ViewGroup.java:7383) at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1103) at android.view.View.layout(View.java:24475) at android.view.ViewGroup.layout(ViewGroup.java:7383) at androidx.viewpager.widget.ViewPager.onLayout(ViewPager.java:1775) at android.view.View.layout(View.java:24475) at android.view.ViewGroup.layout(ViewGroup.java:7383) at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1829) at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1673) at android.widget.LinearLayout.onLayout(LinearLayout.java:1582) at android.view.View.layout(View.java:24475) at android.view.ViewGroup.layout(ViewGroup.java:7383) at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332) at android.widget.FrameLayout.onLayout(FrameLayout.java:270) at android.view.View.layout(View.java:24475) at android.view.ViewGroup.layout(ViewGroup.java:7383) at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1829) at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1673) at android.widget.LinearLayout.onLayout(LinearLayout.java:1582) at android.view.View.layout(View.java:24475) at android.view.ViewGroup.layout(ViewGroup.java:7383) at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332) at android.widget.FrameLayout.onLayout(FrameLayout.java:270) at android.view.View.layout(View.java:24475) at android.view.ViewGroup.layout(ViewGroup.java:7383) at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1829) at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1673) at android.widget.LinearLayout.onLayout(LinearLayout.java:1582) at android.view.View.layout(View.java:24475) at android.view.ViewGroup.layout(ViewGroup.java:7383) at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332) at android.widget.FrameLayout.onLayout(FrameLayout.java:270) at com.android.internal.policy.DecorView.onLayout(DecorView.java:1225) at android.view.View.layout(View.java:24475) at android.view.ViewGroup.layout(ViewGroup.java:7383) at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:4273) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:3708) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:2631) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:9978) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1010) at android.view.Choreographer.doCallbacks(Choreographer.java:809) at android.view.Choreographer.doFrame(Choreographer.java:744) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:995) at android.os.Handler.handleCallback(Handler.java:938) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:246) at android.app.ActivityThread.main(ActivityThread.java:8506) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:602) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1130)