本文介绍recyclerview 的 集中使用方式
RecyclerView 是一个综合性的列表空间 他综合实现了listview gridview 以及瀑布流 使用起来超级简单 而且效果很强大 并且还优化了很多gridview listview 的不足之处
简单说一下RecyclerView的使用
compile ‘com.android.support:recyclerview-v7:24.2.1’ // RecyclerView
compile ‘com.android.support:cardview-v7:23.0.1’ // cardview
我是使用cardview 和RecyclerView 结合使用的
你也可以单独使用RecyclerView 就好
xml 文件
android.support.v7.widget.RecyclerView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/recyclerview_list"
// 初始化控件
private void initView(View view) {
recyclerview_list = (RecyclerView) view.findViewById(R.id.recyclerview_list);
}
// 模拟数据
private List getData() {
List data = new ArrayList<>();
String item = "item";
for (int i = 0; i < 100; i++) {
data.add(item+i);
}
return data;
}
列表条目布局我还是截图吧 目前支持xml文件
// RecyclerView的adapter
classMyAdapterextendsRecyclerView.Adapter{ Context context;
List data;
LayoutInflater inflater;
private List mHeights;
public MyAdapter(Context context,List data) {
this.context = context;
this.data = data;
inflater = LayoutInflater.from(context);
mHeights = new ArrayList<>();
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View inflate = inflater.inflate(R.layout.recyc_item, parent, false);
MyViewHolder myViewHolder = new MyViewHolder(inflate);
return myViewHolder;
}
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
}
@Override
public int getItemCount() {
return data.size();
}
}
classMyViewHolderextendsRecyclerView.ViewHolder{ private final TextView item_title;
private final ImageView item_img;
public MyViewHolder(View itemView) {
super(itemView);
item_title = (TextView)itemView.findViewById(R.id.item_title);
item_img = (ImageView) itemView.findViewById(R.id.item_img);
}
}
// RecyclerView设置adapter 模式一 listview效果
layoutmaner = new LinearLayoutManager(getContext(),LinearLayoutManager.VERTICAL,false);
myAdapter = new MyAdapter(getContext(),getData());
recyclerview_list.setLayoutManager(layoutmaner);
recyclerview_list.setAdapter(myAdapter);
// RecyclerView设置adapter 模式二 gridview效果
layoutmaner= new GridLayoutManager(getContext(),2);
myAdapter = new MyAdapter(getContext(),getData());
recyclerview_list.setLayoutManager(layoutmaner);
recyclerview_list.setAdapter(myAdapter);
// RecyclerView设置adapter 模式三 瀑布流效果
在adapter中的onBindViewHolder给item 设置一个随机高度
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
// 随机高度, 模拟瀑布效果.
if (mHeights.size() <= position) {
mHeights.add((int) (300 + Math.random() * 600)); }
ViewGroup.LayoutParams lp = holder.item_title.getLayoutParams();
lp.height = mHeights.get(position);
holder.item_img.setLayoutParams(lp); }
layoutmaner = new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL); myAdapter = new MyAdapter(getContext(),getData()); recyclerview_list.setLayoutManager(layoutmaner); recyclerview_list.setAdapter(myAdapter);
这这是三种效果 当然还有很多效果并没有在这里展现 等待我们一起挖掘 demo 源码就不上了 真的很简单 随便研究一下 就可以写的出来 自己动手丰衣食足 哈哈 加油哦