对于RecyclerView的使用在此不详细赘述了,毕竟张鸿洋对recyclerview的介绍可谓是大多数人的入门文章了,对于出现了时间很长,并且十分好使用的控件没有出现让他更好用的库那简直是不可能的事情,在这里给大家介绍下EasyRecyclerAdapter的使用,这个库可以让你的recyclerview变得更加的强大。
首先就是为项目引入EasyRecyclerAdapter库,在android studio下一行代码搞定
compile 'com.github.cmc00022:easyrecycleradapters:1.1.1'
同步之后就可以在项目中使用了。废话不多说,先上代码
public class MainActivity extends AppCompatActivity {
private RecyclerView recyclerView;
private List<Object> list = new ArrayList<>();
private EasyRecyclerAdapter recyclerViewAdapter = new EasyRecyclerAdapter(this);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyclerView = (RecyclerView) findViewById(R.id.rv_recyclerview);
recyclerView.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL));
initData();
loadingData();
recyclerViewAdapter.addAll(list);
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
recyclerView.setLayoutManager(linearLayoutManager);
recyclerView.setAdapter(recyclerViewAdapter);
}
private void loadingData() {
recyclerViewAdapter.bind(Title.class, TitleViewHolder.class);
recyclerViewAdapter.bind(ItemB.class, ItemBViewHolder.class);
}
private void initData() {
list.add(new Title("我就是itemA"));
List<String> lisData = new ArrayList<>();
for (int i = 0; i < 25; i++) {
lisData.add("我是ItemB第" + i + "个");
}
list.add(new ItemB(lisData));
}
}
布局文件中只有一个recyclerview,除此之外是什么都不存在的。
list是我要显示的数据。
看起来就是正常的使用,这个库真正强大的地方时在loadingData这个方法中。
recyclerViewAdapter.bind(Title.class, TitleViewHolder.class);
recyclerViewAdapter.bind(ItemB.class, ItemBViewHolder.class);
可以认为这是为特殊的JavaBean绑定了viewholder的样式,每个对应的Bean都有对应的样式。
public class TitleViewHolder extends EasyViewHolder<Title> {
private TextView tvTitle;
private Context context;
public TitleViewHolder(Context context, ViewGroup parent) {
super(context, parent, R.layout.title_layout);
this.context = context;
tvTitle = (TextView) itemView.findViewById(R.id.tv_title);
}
@Override
public void bindTo(Title value) {
if (value != null) {
itemView.setTag(value);
tvTitle.setText(value.getTitle());
}
}
}
比如上面这个就是我Title这个bean对应的viewholder,可以看到的是我在这里面做的只有在继承的时候指定我绑定好的bean,剩下的就是需要显示数据的显示就好了。
由此,我们想要任何样式都可以用recyclerview去显示,这么做的好处就是,所有的数据显示位置都是可变的,只要在解析数据的时候做好处理就可以显示所有我们需要显示的数据了。
Demo链接是
https://github.com/DespairK/EasyRecycler