《第二行代码》 第一章RecycleView

它也是滚动控件,比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'
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章