Recyclerview系列(1)—基础使用

xiaoxiao2021-02-28  94

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); } }); } }
转载请注明原文地址: https://www.6miu.com/read-46560.html

最新回复(0)