《第二行代碼》 第一章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'
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章