它也是滚动控件,比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'
网友评论