0

I have alot of ImageViews in RecyclerView item in LinearLayout. When I scroll horizontally it scrolls perfectly. But I want the focused item in RecyclerView to get expanded from the actual size.

Any help ?

public class NavigationBarManager extends RecyclerView.Adapter<NavigationBarManager.FilterItemHolder> implements OnItemSelectedListener, AnimatorListener{//, Observer {
    private static final String TAG = "NavigationBarManager";
    private RecyclerView mRecyclerView ;
    private int mSelectedItem = 0;

    private NotificationHandler mAnimNtfHandler;

    public static final int DIRECTION_LEFT = -1;
    public static final int DIRECTION_RIGHT = 1;
    Context mContext;
    FilterItemHolder mFilterItemHolder;

    private ArrayList<String>  mFilterStringList;
    private ArrayList<Drawable>  mFilterDrawableList;
    private ArrayList<Integer> mCursorIdxList;
    private ArrayList<Integer>  mFilterIdList;
    private HtvChannelListUtil mListUtil;
    private ITvSettingsManager mSettings;
    private RecyclerView.SmoothScroller smoothScroller;
    private LinearLayoutManager mRecyclerViewMgr = null;

    public NavigationBarManager(Context context)
    {
        mContext = context;
        mAnimNtfHandler = NotificationHandler.getInstance();
        mFilterStringList = new ArrayList<String>();
        mFilterDrawableList = new ArrayList<Drawable>();
        mFilterIdList = new ArrayList<Integer>();
        mCursorIdxList = new ArrayList<Integer>();

        mListUtil = HtvChannelListUtil.getInstance();       
        mSettings = ITvSettingsManager.Instance.getInterface();
        mCacheManager = HtvChannelCacheManager.getInstance();
        mFillDataIntoNavigationBar();
        mNtfHandler = NotificationHandler.getInstance();
    }

    public void setLayoutManager(LinearLayoutManager pRecyclerViewMgr)
    {
        mRecyclerViewMgr = pRecyclerViewMgr;
    }

    public class FilterItemHolder extends RecyclerView.ViewHolder
    {
        ImageView imageView;
        //ImageView mBgView;
        public FilterItemHolder(View itemView) 
        {
            super(itemView);
            // get the reference of item view's
            imageView=(ImageView) itemView.findViewById(R.id.imageview);
            //mBgView = (ImageView) itemView.findViewById(R.id.bgView);
        }
    }

    @Override
    public FilterItemHolder onCreateViewHolder(ViewGroup parent, int viewType)
    {
        Log.e(TAG,"onCreateViewHolder viewType" +viewType);
        View lViewHolder = LayoutInflater.from(parent.getContext()).inflate(R.layout.item, parent, false);
        FilterItemHolder lHolder = new FilterItemHolder(lViewHolder); 
        mFilterItemHolder = lHolder;
        return lHolder;
    }

    @Override
    public void onBindViewHolder(FilterItemHolder holder, final int position) 
    {
        Log.e(TAG,"onBindViewHolder position=" +position);
        Log.e(TAG,"onBindViewHolder getAdapterPosition=" +holder.getAdapterPosition());
        Log.e(TAG,"mSelectedItem=" +mSelectedItem);

        holder.imageView.setImageDrawable(mFilterDrawableList.get(position));
        if(position == mSelectedItem)
        {
            holder.imageView.requestFocus();
            holder.imageView.setSelected(true);
            Log.e(TAG,"requesting focus=");

            //holder.mBgView.setBackgroundResource(R.drawable.button_box_hil);   
        }
        else
        {
            holder.imageView.setSelected(false);
            //holder.mBgView.setBackgroundResource(0);
        }
    }

    @Override
    public void onAttachedToRecyclerView(final RecyclerView recyclerView) 
    {
        super.onAttachedToRecyclerView(recyclerView);
        mRecyclerView = recyclerView;
    }

    @Override
    public void onItemSelected(AdapterView<?> pParent, View pView, int pPosition, long pId)
    {
        Log.d(TAG,"onItemSelected " + pPosition);
    }

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

    @Override
    public void onNothingSelected(AdapterView<?> arg0)
    {
        Log.e(TAG,"onNothingSelected");
    }

    @Override
    public void onAnimationCancel(Animator pAnimator) 
    {
    }

    @Override
    public void onAnimationEnd(Animator pAnimator)
    {
    }

    @Override
    public void onAnimationRepeat(Animator pAnimator)
    {   
    }

    @Override
    public void onAnimationStart(Animator pAnimator)
    {
    }

    public void moveFocus(int pDirection)
    {
        int lNextSelect = mSelectedItem + pDirection;
        if (lNextSelect >= 0 && lNextSelect < getItemCount())
        {
            //notifyItemChanged(mSelectedItem);
            mSelectedItem = lNextSelect;
            //notifyItemChanged(mSelectedItem);
            mRecyclerView.smoothScrollToPosition(mSelectedItem);
            if(mRecyclerView.getChildAt(mSelectedItem) != null)
            {
                //mRecyclerView.getChildAt(mSelectedItem).requestFocus();
            }
        }
        else
        {
            return;
        }

        setNavigatorText();
        setCurrentSelection(mSelectedItem);
        int lSelectedList = mCursorIdxList.get(mSelectedItem);
        mCacheManager.setCurrentListIdx(lSelectedList);
        mListUtil.selectList(lSelectedList);
        mNtfHandler.notifyAllObservers(EventID.CH_LIST_REFRESH,null);
    }

    public void refresh()
    {
        mRecyclerView.smoothScrollToPosition(mSelectedItem);
        int lCurrentList = mCacheManager.getCurrentListIdx();
        int lNewSelection = mCursorIdxList.indexOf((Integer)lCurrentList);
        Log.d(TAG,"refresh: old selection - "+ mSelectedItem + "new selection - " + lNewSelection);

        if(mSelectedItem != lNewSelection)
        {
            //notifyItemChanged(mSelectedItem);
            mSelectedItem = lNewSelection;
            //notifyItemChanged(mSelectedItem);
            if(mRecyclerView.getChildAt(mSelectedItem) != null)
            {
                mRecyclerView.getChildAt(mSelectedItem).requestFocus();
            }
            setNavigatorText();
            setCurrentSelection(mSelectedItem);
        }           
    }
}

The above code is my class which extends RecyclerView. Do I have to add some animator to expand the items. If yes where and how ?

asmhan
  • 27
  • 4
  • 2
    can you post your `code`? – iamkdblue Apr 12 '18 at 08:50
  • check this link if it helps: https://stackoverflow.com/questions/33269409/how-to-increase-the-size-of-a-current-focused-item-on-a-recyclerview?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa – Nikhil Gupta Apr 12 '18 at 09:01

0 Answers0