学习了Android这么久,做项目时都是首选ListView,基本上没用过RecycleView,因为ListView实现起来比较简单。。。。RecycleView是V7包下面的,首先添加依赖包
compile 'com.android.support:recyclerview-v7:24.0.0'
下面是最基本的ReCycleView的用法:
mRecyclerView = findView(R.id.id_recyclerview);
//设置布局管理器
mRecyclerView.setLayoutManager(layout);
//设置adaptermRecyclerView.setAdapter(adapter)
//设置Item增加、移除动画
mRecyclerView.setItemAnimator(new DefaultItemAnimator());
//添加分割线
mRecyclerView.addItemDecoration(new DividerItemDecoration(getActivity(), DividerItemDecoration.HORIZONTAL_LIST));
public class HomeActivity extends ActionBarActivity{
private RecyclerView mRecyclerView;
private List<String> mDatas;
private HomeAdapter mAdapter;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_single_recyclerview);
initData();
mRecyclerView = (RecyclerView) findViewById(R.id.id_recyclerview);
adapter = new HomeAdapter(this,list);
LinearLayoutManager manager = new LinearLayoutManager(this);
manager.setOrientation(1);//O为横向,1为纵向
recyclerView.setLayoutManager(manager);
recyclerView.setAdapter(adapter);
}
protected void initData(){
mDatas = new ArrayList<String>();
for (int i = 0; i < 20; i++)
{
mDatas.add("我是RecycleView");
}
}
class HomeAdapter extends RecyclerView.Adapter<HomeAdapter.MyViewHolder>{
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType)
{
MyViewHolder holder = new MyViewHolder(LayoutInflater.from(
context).inflate(R.layout.recycleview_item_layout, parent,
false));
return holder;
}
@Override
public void onBindViewHolder(MyViewHolder holder, int position){
holder.tv.setText(mDatas.get(position));
}
@Override
public int getItemCount()
{
return list.size();
}
class MyViewHolder extends RecyclerView.ViewHolder
{
ImageView tv;
public MyViewHolder(View view)
{
super(view);
tv = (ImageView) view.findViewById(R.id.item_image);
}
}
}
}
RecycleView的ViewHolder是要自己写的,在建立Adapter的时候要重写三个方法,onCreateViewHolder中通过构造方法将布局传到ViewHolder中,ViewHolder中在findViewById控件,onBindViewHolder方法中可以给控件绑定数据。
用RecycleView写瀑布流很简单,把设置布局管理器改一改,然后在把控件的高度取随机数就ok了。
第一步:设置布局管理器
StaggeredGridLayoutManager manager = new StaggeredGridLayoutManager(5,1);//5是几行或者几列,根据第二个参数,0为横向
manager.setOrientation(1);//O为横向,1为纵向
recyclerView.setLayoutManager(manager);
第二步:控件随机高度
Random r = new Random();
int randomInt = r.nextInt(180) + 60;
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) holder.tv.getLayoutParams();
params.height = randomInt;
holder.tv.setLayoutParams(params);
瀑布流就简单的完成了。这是最基本的用法,我自己还在学习当中。和我一样的菜鸟也要赶紧起飞。