您的位置:首页 > 其它

Recyclerview系列(1)--基础使用

2017-07-10 22:40 190 查看

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));

// 设置item之间的间隔
MyStandardItemDecoration decoration =
new MyStandardItemDecoration(20);

recyclerView.addItemDecoration(decoration);

// 设置动画
recyclerView.setItemAnimator(new DefaultItemAnimator());

mStandardRecyclerViewAdapter adapter =
new mStandardRecyclerViewAdapter();

// 设置adapter
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 = subview.getLayoutParams();
// layoutParams.height = dataheights.get(position);
// subview.setLayoutParams(layoutParams);

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); }
});
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: