android开发:RecyclerView的简单使用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/shakdy/article/details/81947858

简介

  • 本文内容是记录如何使用RecyclerView

注意:具体代码中的一下变量是从一个项目中复制过来的,如果要在自己项目中使用,需要修改成自己项目需要的变量。

第一步:项目中app目录的build.gradle文件添加依赖

  compile 'com.android.support:recyclerview-v7:25.3.1'
  compile 'com.zhy:base-rvadapter:3.0.3'

第二步:添加RecyclerView布局文件


    <android.support.v7.widget.RecyclerView
        android:id="@+id/rcv_menu"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"/>

第三步:适配器布局文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:clickable="false"
    android:focusable="false"
    android:orientation="horizontal" >

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:clickable="false"
        android:focusable="false"
        android:gravity="center_horizontal"
        android:orientation="vertical" >

        <ImageView
            android:id="@+id/order_item_pic_iv"
            android:layout_width="75dp"
            android:layout_height="75dp"
            android:layout_margin="5dp"
            android:scaleType="fitCenter"
            android:src="@drawable/image_loading" />

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="5dp"
            android:orientation="horizontal" >

            <TextView
                android:id="@+id/book_item_price_tv"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="¥10"
                android:textColor="@color/titlebar" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/order_item_pic_iv"
                android:text="/份"
                android:textColor="@android:color/darker_gray" />
        </LinearLayout>
    </LinearLayout>

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_margin="5dp"
        android:layout_weight="1"
        android:clickable="false"
        android:focusable="false"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/order_item_name_tv"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:ellipsize="marquee"
            android:marqueeRepeatLimit="marquee_forever"
            android:padding="5dp"
            android:singleLine="true"
            android:text="青椒炒蛋"
            android:textSize="18sp" />

        <TextView
            android:id="@+id/order_item_desc_tv"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingLeft="5dp"
            android:text="经典菜式,美味可口"
            android:textColor="@android:color/darker_gray" />

        <TextView
            android:id="@+id/order_item_date_tv"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:ellipsize="marquee"
            android:focusable="true"
            android:focusableInTouchMode="true"
            android:marqueeRepeatLimit="marquee_forever"
            android:padding="5dp"
            android:singleLine="true"
            android:text="2016-01-04 08:25:00 至2016-01-07 09:00:00"
            android:textColor="@android:color/darker_gray" />

        <TextView
            android:id="@+id/order_item_limit_tv"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingLeft="5dp"
            android:text="5/10"
            android:textColor="@android:color/darker_gray" />

        <TextView
            android:id="@+id/book_item_sure_btn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/book_submit_btn_selector"
            android:clickable="true"
            android:focusable="true"
            android:gravity="center"
            android:text="预定"
            android:textColor="@android:color/white" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:clickable="false"
        android:focusable="false"
        android:gravity="center_vertical"
        android:orientation="vertical" >


        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="20dp"
            android:gravity="center"
            android:orientation="horizontal"
            android:visibility="gone" >

            <ImageButton
                android:id="@+id/book_item_decrease_ibtn"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@drawable/book_item_decress"
                android:clickable="true"
                android:focusable="true"
                android:padding="10dp"
                android:scaleType="fitCenter" />

            <TextView
                android:id="@+id/book_item_num_tv"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:padding="5dp"
                android:text="1"
                android:textStyle="bold" />

            <ImageButton
                android:id="@+id/book_item_add_ibtn"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@drawable/book_item_add"
                android:clickable="true"
                android:focusable="true"
                android:padding="10dp"
                android:scaleType="fitCenter" />
        </LinearLayout>
    </LinearLayout>

</LinearLayout>

第四步:适配器java文件

public class BookDinnerAdater extends CommonAdapter<Book> {

    private String TAG = BookDinnerAdater.class.getSimpleName();
    private ButtonInterface buttonInterface;
    private MenuSelectInterface menuSelectInterface;
    private MenuCancelInterface menuCancelInterface;

    public BookDinnerAdater(Context context, int layoutId, List<Book> datas) {
        super(context, layoutId, datas);
    }



    /**
     *按钮点击事件需要的方法
     */
    public void setButtonOnclick(ButtonInterface buttonInterface){
        this.buttonInterface=buttonInterface;
    }
    /**
     *选择控件点击事件需要的方法
     */
    public void setMenuSelectOnclick(MenuSelectInterface menuSelectedInterface){
        this.menuSelectInterface=menuSelectedInterface;
    }
    /**
     *取消控件点击事件需要的方法
     */
    public void setMenuCancelOnclick(MenuCancelInterface menuCancelInterface){
        this.menuCancelInterface = menuCancelInterface;
    }

    @Override
    protected void convert(ViewHolder holder,Book book, int position) {

        holder.setText(R.id.order_item_name_tv,book.getName());
//        holder.setText(R.id.order_item_pic_iv,book.getPhoto());
        holder.setText(R.id.order_item_desc_tv,book.getDesc());
        String limit = book.getTotal()+"/"+book.getLimit();
        holder.setText(R.id.order_item_limit_tv,limit);
        holder.setText(R.id.book_item_price_tv,"¥"+book.getPrice());
        String date =  book.getBegindate()+" "+book.getBegintime()+" 至 "+
                book.getEnddate()+" "+book.getEndtime();
        holder.setText(R.id.order_item_date_tv,date);
        TextView book_item_sure_btn = holder.getView(R.id.book_item_sure_btn);
        book_item_sure_btn.setText("预订");
        book_item_sure_btn.setTextColor(Color.WHITE);
        book_item_sure_btn.setEnabled(true);


        //预订
        holder.setOnClickListener(R.id.book_item_sure_btn, new View.OnClickListener() {
            @Override
            public void onClick(View v) {

            }
        });

    }

    /**
     * 按钮点击事件对应的接口
     */
    public interface ButtonInterface{
        void onclick(View view, int position);
    }
    /**
     *  取消点击事件对应的接口
     */
    public interface MenuSelectInterface{
        void onclick(View view, int position);
    }
    /**
     * 选择控件点击事件对应的接口
     */
    public interface MenuCancelInterface{
        void onclick(View view, int position);
    }


}

设置RecyclerView关联适配器

private List<T> mData = new ArrayList<T>();
private void initData() {
        mRecyclerView.setHasFixedSize(true);
        //设置布局管理器
        linearLayoutManager = new LinearLayoutManager(this);
        mRecyclerView.setLayoutManager(linearLayoutManager);
        mRecyclerView.setLayoutManager(new GridLayoutManager(this, 4));
//        mRecyclerView.setLayoutManager(new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL));
        //添加分割线
        mRecyclerView.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL));
        mAdapter = new BookDinnerAdater(this, R.layout.list_item_menu, mData);
        mAdapter.setOnItemClickListener(new CommonAdapter.OnItemClickListener() {
            @Override
            public void onItemClick(View view, RecyclerView.ViewHolder holder,  int position) {
;

            }

            @Override
            public boolean onItemLongClick(View view, RecyclerView.ViewHolder holder, int position) {
                return false;
            }
        });



//        initHeaderAndFooter();

        mLoadMoreWrapper = new LoadMoreWrapper(mAdapter);
        mLoadMoreWrapper.setLoadMoreView(R.layout.default_loading);
        mLoadMoreWrapper.setOnLoadMoreListener(new LoadMoreWrapper.OnLoadMoreListener() {
            @Override
            public void onLoadMoreRequested() {
                Log.i(Tag,"onLoadMoreRequested");


            }
        });

        mRecyclerView.setAdapter(mAdapter);

        mAdapter.notifyDataSetChanged();
    }
    /**
    * 初始化头部,仅供参考
    */
     private void initHeaderAndFooter() {
        //装饰者模式
        mHeaderAndFooterWrapper = new HeaderAndFooterWrapper(mAdapter);

        View header = LayoutInflater.from(getActivity()).inflate(R.layout.item_course, mRecyclerView, false);
        TextView tv_section = (TextView) header.findViewById(R.id.tv_section);
        TextView tv_course_name = (TextView) header.findViewById(R.id.tv_course_name);
        TextView tv_classes_name = (TextView) header.findViewById(R.id.tv_classes_name);
        TextView tv_teacher_name = (TextView) header.findViewById(R.id.tv_teacher_name);
        TextView tv_course_state = (TextView) header.findViewById(R.id.tv_course_state);
        tv_section.setText("节次");
        tv_course_name.setText("课程");
        tv_classes_name.setText("班级");
        tv_teacher_name.setText("教师");
        tv_course_state.setText("状态");

        mHeaderAndFooterWrapper.addHeaderView(header);

    }

猜你喜欢

转载自blog.csdn.net/shakdy/article/details/81947858
今日推荐