美文网首页Android开发
《第二行代码》 第一章RecycleView

《第二行代码》 第一章RecycleView

作者: 你的益达233 | 来源:发表于2021-09-22 15:42 被阅读0次

    它也是滚动控件,比ListView要强大。可以说ListView能做的事情,它都能做,但是它能做的事情,ListView不一定能做,比如横向滚动,瀑布流

    它原本的写法差点忘记了,因为都是用别人强大的库

    还是找到了一个旧的代码:

    class FilterRecyclerAdapter extends RecyclerView.Adapter<FilterRecyclerAdapter.HomeRecyclerHolder> {
    
        int filterType;
    
        @Override
        public FilterRecyclerAdapter.HomeRecyclerHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            return new FilterRecyclerAdapter.HomeRecyclerHolder(LayoutInflater.from(mContext).inflate(R.layout.layout_beauty_control_recycler, parent, false));
        }
    
        @Override
        public void onBindViewHolder(FilterRecyclerAdapter.HomeRecyclerHolder holder, final int position) {
            final List<Filter> filters = getItems(filterType);
            holder.filterImg.setImageResource(filters.get(position).resId());
            holder.filterName.setText(filters.get(position).description());
            if (mFilterPositionSelect == position && filterType == mFilterTypeSelect) {
                holder.filterImg.setBackgroundResource(R.drawable.control_filter_select);
            } else {
                holder.filterImg.setBackgroundResource(0);
            }
            holder.itemView.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                    mFilterPositionSelect = position;
                    mFilterTypeSelect = filterType;
                    setFilterProgress();
                    notifyDataSetChanged();
                    mBeautySeekBar.setVisibility(VISIBLE);
                    if (mOnFUControlListener != null)
                        mOnFUControlListener.onFilterNameSelected(sFilterName = filters.get(mFilterPositionSelect));
                }
            });
        }
    
        @Override
        public int getItemCount() {
            return getItems(filterType).size();
        }
    
        public void setFilterType(int filterType) {
            this.filterType = filterType;
            notifyDataSetChanged();
        }
    
        public void setFilterLevels(float filterLevels) {
            setFilterLevel(getItems(mFilterTypeSelect).get(mFilterPositionSelect).filterName(), filterLevels);
        }
    
        public void setFilter(Filter filter) {
            mFilterTypeSelect = filter.filterType();
            mFilterPositionSelect = getItems(mFilterTypeSelect).indexOf(filter);
        }
    
        public void setFilterProgress() {
            seekToSeekBar(getFilterLevel(getItems(mFilterTypeSelect).get(mFilterPositionSelect).filterName()));
        }
    
        public List<Filter> getItems(int type) {
            switch (type) {
                case Filter.FILTER_TYPE_BEAUTY_FILTER:
                    return mBeautyFilters;
                case Filter.FILTER_TYPE_FILTER:
                    return mFilters;
            }
            return mFilters;
        }
    
        class HomeRecyclerHolder extends RecyclerView.ViewHolder {
    
            ImageView filterImg;
            TextView filterName;
    
            public HomeRecyclerHolder(View itemView) {
                super(itemView);
                filterImg = (ImageView) itemView.findViewById(R.id.control_recycler_img);
                filterName = (TextView) itemView.findViewById(R.id.control_recycler_text);
            }
        }
    }  
    

    这里面有几个固定的写法:

    1、

    class HomeRecyclerHolder extends RecyclerView.ViewHolder{}

    2、
    @Override
        public FilterRecyclerAdapter.HomeRecyclerHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            return new FilterRecyclerAdapter.HomeRecyclerHolder(LayoutInflater.from(mContext).inflate(R.layout.layout_beauty_control_recycler, parent, false));
        }
    
    开始使用

    横向滚动:

    mFilterRecyclerView.setLayoutManager(new LinearLayoutManager(mContext, LinearLayoutManager.HORIZONTAL, false));
        mFilterRecyclerView.setAdapter(mFilterRecyclerAdapter = new FilterRecyclerAdapter());  
    

    LinearLayoutManager.HORIZONTAL:横向滚动
    LinearLayoutManager.VERTICAL:竖向滚动
    瀑布流:

    rvDatas.setLayoutManager(new StaggeredGridLayoutManager(2, LinearLayoutManager.VERTICAL));

    最好提一下:强力建议用强大的库,功能强大,代码简洁
    api 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.46'
    

    相关文章

      网友评论

        本文标题:《第二行代码》 第一章RecycleView

        本文链接:https://www.haomeiwen.com/subject/hsqggltx.html