Android – how to change Recyclerview height dynamically?

I’m stuck with an issue about changing Recycler height based on its total items.
What I have tried is to use Layout Param like this:

        ViewGroup.LayoutParams params = myRecyclerView.getLayoutParams();
        params.height = itemHeight * numberOfItem;
        myRecyclerView.requestLayout();

or

  • In Android, how do I take an action whenever a variable changes?
  • First commit Android Studio Project — What should leave out?
  • Verify Android apk has not been repackaged?
  • Android Studio recognizes physical Device as Null?
  • Android UDID like IPhone?
  • Bitwise “& ” on a long?
  •        ViewGroup.LayoutParams params = new  RecyclerView.LayoutParams(..WRAP_CONTENT, ...WRAP_CONTENT);;
           params.height = itemHeight * numberOfItem;
           myRecyclerView..setLayoutParams(params);
    

    But it didn’t work.
    How can I do it ? Please help me !

    Related posts:

    Wifi position triangulation
    Difference between preference and shared preference in Android
    SwipeRefreshLayout - swipe down to refresh but not move the view pull down
    PreferenceFragmentCompat requires preferenceTheme to be set
    Remote Test Laboratory (RTL) for Android
    Is there a way to listen for animation end in AnimatedVectorDrawables
  • error package android.support.design.widget does not exist
  • onRegistered() from GCMIntentService never called
  • Remove application icon and title from Honeycomb action bar
  • Setting Roboto font in TextView - xml
  • Make sure that my code is thread safe
  • Clicking any button more than once in crosswalk browser does not work
  • 3 Solutions collect form web for “Android – how to change Recyclerview height dynamically?”

    I tried this. It worked. May be help.

    @Override
    public void onBindViewHolder(FeedListRowHolder feedListRowHolder, int i) {
    
        //this change height of rcv
         LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
         params.height =80; //height recycleviewer
         feedListRowHolder.itemView.setLayoutParams(params);
    
        FeedItem feedItem = feedItemList.get(i);
    
        Picasso.with(mContext).load(feedItem.getThumbnail())
                .error(R.drawable.placeholder)
                .placeholder(R.drawable.placeholder)
                .into(feedListRowHolder.thumbnail);
    
        feedListRowHolder.title.setText(Html.fromHtml(feedItem.getTitle()));
        feedListRowHolder.itemView.setActivated(selectedItems.get(i, false));
    
        feedListRowHolder.setClickListener(new FeedListRowHolder.ClickListener() {
            public void onClick(View v, int pos, boolean isLongClick) {
                if (isLongClick) {
    
                    // View v at position pos is long-clicked.
                    String poslx = pos + "";
                    Toast.makeText(mContext, "longclick " + poslx, Toast.LENGTH_SHORT).show();
    
                } else {
                    // View v at position pos is clicked.
                    String possx = pos + "";
                    Toast.makeText(mContext, "shortclick " + possx, Toast.LENGTH_SHORT).show();
                    toggleSelection(pos);
                }
            }
        });
    
    }
    

    You should use LayoutParams of parent’s view in setLayoutParams(params).

    For example:

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        >
        <android.support.v7.widget.RecyclerView
            android:id="@+id/images"
            android:layout_width="wrap_content"
            android:layout_height="360dp"
            >
        </android.support.v7.widget.RecyclerView>
     </Relativelayout>
    

    Change LayoutParams in the code.

      RelativeLayout.LayoutParams lp =
                new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, 500);
     recyclerView.setLayoutParams(lp);
    

    This code works I am sure about it

    ViewGroup.LayoutParams params=recyclerview.getLayoutParams();
    params.height=100;
    recyclerview.setLayoutParams(params);
    

    The other thing you could do is make a linear layout as the parent of the recycler view and then increase the height dynamically for the parent view

    Consider the following XML below

    <LinearLayout 
          andorid:id=""@+id/yourLayoutId"">
    
        <RecyclerView/>
    
    </LinearLayout
    

    Consider the following code

    LinearLayout layout = (LinearLayout)findViewById(R.id.yourLayoutId);
    LinearLayout.LayoutParams lp = (LayoutParams) layout.getLayoutParams();
    lp.height = 100;
    
    Android Babe is a Google Android Fan, All about Android Phones, Android Wear, Android Dev and Android Games Apps and so on.