1.引入
dependencies { … //compile ‘com.android.support:cardview-v7:23.1.1’ compile ‘com.android.support:recyclerview-v7:23.1.1’ }
2.XML:
<?xml version=
"1.0" encoding=
"utf-8"?>
<LinearLayout xmlns:android=
"http://schemas.android.com/apk/res/android"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:orientation=
"vertical" >
<android.support.v7.widget.RecyclerView
android:id=
"@+id/recycler_standard"
android:layout_width=
"fill_parent"
android:layout_height=
"fill_parent" >
</android.support.v7.widget.RecyclerView>
</LinearLayout>
3.代码内调用:
RecyclerView recyclerView =
(RecyclerView) findViewById(R.id.recycler_standard);
recyclerView.setLayoutManager(
new StaggeredGridLayoutManager(
3,
StaggeredGridLayoutManager.VERTICAL));
MyStandardItemDecoration decoration =
new MyStandardItemDecoration(
20);
recyclerView.addItemDecoration(decoration);
recyclerView.setItemAnimator(
new DefaultItemAnimator());
mStandardRecyclerViewAdapter adapter =
new mStandardRecyclerViewAdapter();
recyclerView.setAdapter(adapter);
4.adapter:
class mStandardRecyclerViewAdapter extends RecyclerView.Adapter<mStandardViewHolder> {
@Override
public int getItemCount() {
return datasources.size();
}
/**
* 这里holder.textview.settext("XXXX");
* */
@Override
public void onBindViewHolder(mStandardViewHolder holder,
int position) {
holder.tv_word.setText(datasources.get(position));
LayoutParams layoutParams = holder.ll_blue_rec_back
.getLayoutParams();
layoutParams.height = dataheights.get(position);
holder.ll_blue_rec_back.setLayoutParams(layoutParams);
}
/**
* 这里边初始化 view ... layout
* */
@Override
public mStandardViewHolder
onCreateViewHolder(ViewGroup viewgroup,
int position) {
View subview = View.inflate(MyDemosApplication.mContext,
R.layout.tv_item,
null);
return new mStandardViewHolder(subview);
}
}
5.ViewHolder:
/**
* viewholder
* */
class mStandardViewHolder extends ViewHolder {
TextView tv_word =
null;
LinearLayout ll_blue_rec_back =
null;
public mStandardViewHolder(View itemview) {
super(itemview);
tv_word = (TextView) itemview.findViewById(R.id.word_tv);
ll_blue_rec_back = (LinearLayout) itemview
.findViewById(R.id.ll_blue_rec_back);
}
}
6.分割线:
/**
* 分割线
* */
class MyStandardItemDecoration extends ItemDecoration {
int space =
0;
public MyStandardItemDecoration(
int space) {
super();
}
/**
* 设置分隔大小
* */
@Override
public void getItemOffsets(Rect outRect, View view,
RecyclerView parent, RecyclerView.State state) {
outRect.set(space, space, space, space);
}
/**
* 重绘分割线风格
* */
@Override
public void onDrawOver(Canvas c, RecyclerView parent, State state) {
super.onDrawOver(c, parent, state);
}
}
7.点击事件:
/** * viewholder :item的findviewbyid */
class mStandardViewHolder extends RecyclerView.ViewHolder {
TextView tv_word =
null;
RelativeLayout ll_blue_rec_back =
null;
public mStandardViewHolder(View itemview) {
super(itemview);
tv_word = (TextView) itemview.findViewById(R.id.item_answer_text);
ll_blue_rec_back = (RelativeLayout) itemview.findViewById(R.id.item_back);
itemview.setOnClickListener(
new View.OnClickListener() {
@Override public void onClick(View v) {
System.out.println(
"当前点击位置是" + getPosition());
Toast.makeText(GuessApplication.GlobleContext,
"当前点击位置是" + getPosition(),
Toast.LENGTH_SHORT); }
});
}
}