它也是滾動控件,比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'