加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

recycleView简单用法

发布时间:2020-12-16 23:43:44 所属栏目:百科 来源:网络整理
导读:效果: MDRvActivity: public class MDRvActivity extends AppCompatActivity {String imgur2 ="http://images.rednet.cn/ArticleImage/2017/04/25/201716483007449.jpg" ;String imgurl3 ="http://images.rednet.cn/ArticleImage/2017/04/25/2017167258494

效果:

MDRvActivity:
public class MDRvActivity extends AppCompatActivity {
String imgur2="http://images.rednet.cn/ArticleImage/2017/04/25/201716483007449.jpg";
String imgurl3="http://images.rednet.cn/ArticleImage/2017/04/25/2017167258494983.jpg";
String geyan="学历代表过去,能力代表现在,学习力代表将来";
    private RecyclerView mRecyclerView;

    private RecyclerView.Adapter mAdapter;

    private RecyclerView.LayoutManager mLayoutManager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.recycle_mdrv);
        initData();
        initView();
    }

    private void initData() {
        mLayoutManager = new LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false);
        mAdapter = new MyAdapter(getData());
    }

    private void initView() {
        //RecyclerView的控件id,获取RecyclerView的控件
        mRecyclerView = (RecyclerView) findViewById(R.id.my_recycler_view);
        // 设置布局管理器
        mRecyclerView.setLayoutManager(mLayoutManager);
        // 设置adapter
        mRecyclerView.setAdapter(mAdapter);

        mRecyclerView.addItemDecoration(new MyDividerItemDecoration(this,LinearLayoutManager.VERTICAL));
    }

  /*  private ArrayList<NewsListData> getData() {
        ArrayList<NewsListData> data = new ArrayList<NewsListData>();

        for(int i = 0; i < 10; i++) {
            NewsListData newsListData=new NewsListData(imgur2,geyan+i,"10-11推荐");
            data.add(newsListData);
        }

        return data;
    }*/
  protected List getData()
  {
      List mDatas = new ArrayList<String>();
      for (int i = ‘A‘; i < ‘z‘; i++)
      {
          mDatas.add("" + (char) i);
      }
      return mDatas;
  }

}
MyAdapter:
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder>{

    private List<String> mData;

    public MyAdapter(List data) {
        this.mData = data;
    }

    public void updateData(List data) {
        this.mData = data;
        notifyDataSetChanged();
    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent,int viewType) {
        // 实例化展示的view
        View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.my,parent,false);
        // 实例化viewholder
        ViewHolder viewHolder = new ViewHolder(v);
        return viewHolder;
    }

    @Override
    public void onBindViewHolder(ViewHolder holder,int position) {
        // 绑定数据
        holder.mTv.setText((CharSequence) mData.get(position));
    }

    @Override
    public int getItemCount() {
        return mData == null ? 0 : mData.size();
    }

    public static class ViewHolder extends RecyclerView.ViewHolder {

        TextView mTv;

        public ViewHolder(View itemView) {
            super(itemView);
            mTv = (TextView) itemView.findViewById(R.id.item_tv);
        }
    }
}
MyDividerItemDecoration添加分割线:
public class MyDividerItemDecoration extends RecyclerView.ItemDecoration {

    private static final int[] ATTRS = new int[]{
            android.R.attr.listDivider
    };
    public static final int HORIZONTAL_LIST = LinearLayoutManager.HORIZONTAL;
    public static final int VERTICAL_LIST = LinearLayoutManager.VERTICAL;
    /**
     * 用于绘制间隔样式
     */
    private Drawable mDivider;
    /**
     * 列表的方向,水平/竖直
     */
    private int mOrientation;


    public MyDividerItemDecoration(Context context,int orientation) {
        // 获取默认主题的属性
        final TypedArray a = context.obtainStyledAttributes(ATTRS);
        mDivider = a.getDrawable(0);
        a.recycle();
        setOrientation(orientation);
    }

    @Override
    public void onDraw(Canvas c,RecyclerView parent,RecyclerView.State state) {
        // 绘制间隔
        if (mOrientation == VERTICAL_LIST) {
            drawVertical(c,parent);
        } else {
            drawHorizontal(c,parent);
        }
    }

    @Override
    public void getItemOffsets(Rect outRect,View view,RecyclerView.State state) {
        if (mOrientation == VERTICAL_LIST) {
            outRect.set(0,0,mDivider.getIntrinsicHeight());
        } else {
            outRect.set(0,mDivider.getIntrinsicWidth(),0);
        }
    }

    private void setOrientation(int orientation) {
        if (orientation != HORIZONTAL_LIST && orientation != VERTICAL_LIST) {
            throw new IllegalArgumentException("invalid orientation");
        }
        mOrientation = orientation;
    }

    /**
     * 绘制间隔
     */
    private void drawVertical(Canvas c,RecyclerView parent) {
        final int left = parent.getPaddingLeft();
        final int right = parent.getWidth() - parent.getPaddingRight();
        final int childCount = parent.getChildCount();
        for (int i = 0; i < childCount; i++) {
            final View child = parent.getChildAt(i);
            final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child
                    .getLayoutParams();
            final int top = child.getBottom() + params.bottomMargin +
                    Math.round(ViewCompat.getTranslationY(child));
            final int bottom = top + mDivider.getIntrinsicHeight();
            mDivider.setBounds(left,top,right,bottom);
            mDivider.draw(c);
        }
    }

    /**
     * 绘制间隔
     */
    private void drawHorizontal(Canvas c,RecyclerView parent) {
        final int top = parent.getPaddingTop();
        final int bottom = parent.getHeight() - parent.getPaddingBottom();
        final int childCount = parent.getChildCount();
        for (int i = 0; i < childCount; i++) {
            final View child = parent.getChildAt(i);
            final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child
                    .getLayoutParams();
            final int left = child.getRight() + params.rightMargin +
                    Math.round(ViewCompat.getTranslationX(child));
            final int right = left + mDivider.getIntrinsicHeight();
            mDivider.setBounds(left,bottom);
            mDivider.draw(c);
        }
    }
}

recycle_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="500px"
    android:layout_marginTop="100px"
    tools:ignore="MissingDefaultResource">
    <android.support.v7.widget.RecyclerView
        android:id="@+id/my_recycler_view"
        android:scrollbars="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
</LinearLayout>

item.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout   xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="50dp"
    tools:ignore="MissingDefaultResource">
<TextView
    android:id="@+id/item_tv"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    />
</LinearLayout>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读