传承者(Inheritors)欢迎各位纠正错误,评论,吐槽!!!
思路:
先在build.gradle 里面加上一句
compile 'com.android.support:recyclerview-v7:23.1.1'
接下来布局文件里
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="vertical"
>
</android.support.v7.widget.RecyclerView>
activity里面
public class RecyclerViewActivity extends AppCompatActivity {
private RecyclerView recyclerView;
private RecyclerView.Adapter mAdapter;
private LinearLayoutManager mLayoutManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_recycler_view);
recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
recyclerView.setHasFixedSize(true);//设置固定大小
// //1.种,包含横向和竖向的
// //创建线性布局
// mLayoutManager = new LinearLayoutManager(this);
// //垂直方向,水平方向, mLayoutManager.setOrientation(OrientationHelper.VERTICAL);
// mLayoutManager.setOrientation(OrientationHelper.HORIZONTAL);
// //给recyclerview 设置布局管理器,线性布局
// recyclerView.setLayoutManager(mLayoutManager);
//
// //2.种,表格布局
// GridLayoutManager gridLayoutManager = new GridLayoutManager(this,3);
// //给recyclerview 设置布局管理器,线性布局
// recyclerView.setLayoutManager(gridLayoutManager);
//3.种,瀑布流式布局
StaggeredGridLayoutManager staggeredGridLayoutManager = new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL);
recyclerView.setLayoutManager(staggeredGridLayoutManager);
//创建适配器,并设置
mAdapter = new TestRecyclerAdapter(this);
recyclerView.setAdapter(mAdapter);
}
}
Adapater内容如下
/**
* Created by xxl on 2016/3/9.
*/
public class TestRecyclerAdapter extends RecyclerView.Adapter<TestRecyclerAdapter.ViewHolder> {
private LayoutInflater mInflater;
private String[] mTitles = null;
public TestRecyclerAdapter(RecyclerViewActivity recyclerViewActivity) {
this.mInflater = LayoutInflater.from(recyclerViewActivity);
this.mTitles = new String[20];
for(int i = 0;i<20;i++){
int index = i+1;
mTitles[i] = "item"+index;
}
}
/**
* item显示类型
*
* @param parent
* @param viewType
* @return
*/
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = mInflater.inflate(R.layout.item_recycler_layout,parent,false);
ViewHolder viewHolder = new ViewHolder(view);
return viewHolder;
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
holder.textView.setText(mTitles[position]);
//手动更改高度,不同位置的高度有所不同
holder.textView.setHeight(100 + (position % 3) * 30);
}
@Override
public int getItemCount() {
return mTitles.length;
}
//自定义ViewHolder,持有每个Item的所有界面元素
public static class ViewHolder extends RecyclerView.ViewHolder{
public TextView textView;
public ViewHolder(View itemView) {
super(itemView);
textView = (TextView) itemView.findViewById(R.id.item_recycler);
}
}
}
item项布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/item_recycler"
android:text="xxxx"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="match_parent"
/>
</LinearLayout>