美文网首页
RecyclerView的简单应用1

RecyclerView的简单应用1

作者: 块码加编 | 来源:发表于2020-08-22 11:04 被阅读0次

今天,我们用RecyclerView来实现以下效果

image

实现过程:

1.你需要用到的文件

(1)MainActivity与activity_main.xml

(2)item_menu.xml:菜单项布局文件

(3)DataUtil.java:工具类,添加获取菜单数据的静态方法

(4)Menu.java:菜单实体类,存放菜单的信息

(5)MenuAdapter.java:

继承RecyclerView.Adapter,用作RecyclerView的适配器

(6)MenuViewHolder.java:

与MenuAdapter.java处于同一个.java文件,继承RecyclerView.ViewHolder,用于关联layout文件

2.activity_main.xml要实现的效果:添加一个RecyclerView即可

<androidx.recyclerview.widget.RecyclerView
    android:id="@+id/recyclerview_main_menu"
    android:layout_width="match_parent"
    android:layout_height="62dp">
</androidx.recyclerview.widget.RecyclerView>

提示:记得要导入依赖:

implementation 'androidx.recyclerview:recyclerview:1.1.0'

3.MainActivity:添加成员变量菜单视图RecyclerView mRecyclerViewMenu,菜单图标int[] menuIcons,菜单字符串String [] menus。(这里我把menus的值写在了strings.xml里了,推荐此编码习惯)

4.item_menu.xml要实现的效果:实现一个菜单的效果其中即可,如图

image

5.Menu.java:添加两个成员变量int icon和String menuName,添加带参构造方法

public Menu(int icon, String menuName) {
    this.icon = icon;
    this.menuName = menuName;
}

6.DataUtil.java:添加获取菜单数据的静态方法

public static List<Menu> getMainMenus(int icons[],String names[]){
    List<Menu> menus=new ArrayList<>();
    for (int index = 0; index < icons.length; index++) {
        Menu menu=new Menu(icons[index],names[index]);
        menus.add(menu);
    }
    return menus;
}

注意:这里的Menu不是android.view.Menu,不要引入错了

7.MenuViewHolder.java:

与MenuAdapter.java处于同一个.java文件,继承RecyclerView.ViewHolder类。

添加成员变量ImageView mImgMenuIcon和TextView mTxtMenuName,添加构造方法,如下:

public MenuViewHolder(View itemView) {
    super(itemView);
    mImgMenuIcon=itemView.findViewById(R.id.img_menu_icon);
    mTxtMenuName =itemView.findViewById(R.id.txt_menu_name);
}

8.MenuAdapter.java:

继承RecyclerView.Adapter,添加成员变量Context context和List<Menu> menus,添加带参构造方法。

(1)重写onCreateViewHolder方法,返回一个由item_menu.xml反向生成的视图。

return new MenuViewHolder(LayoutInflater.from(context).inflate(R.layout.item_menu, null));

(2)重写getItemCount方法,返回菜单项的数量(注意判空)

return null != menus ? menus.size() : 0;

(3)重写onBindViewHolder方法,

对MenuViewHolder的成员变量mImgMenuIcon和mTxtMenuName进行设置。

Menu menu=menus.get(position);
holder.mImgMenuIcon.setImageResource(menu.icon);
holder.mTxtMenuName.setText(menu.menuName);

9. MainActivity:

在onCreate方法中初始化menus字符串,绑定mRecyclerViewMenu。

给mRecyclerViewMenu设置布局管理器,创建适配器,给mRecyclerViewMenu设置适配器。

menus=getResources().getStringArray(R.array.main_menu);
mRecyclerViewMenu = findViewById(R.id.recyclerview_main_menu);
mRecyclerViewMenu.setLayoutManager (new GridLayoutManager(this,4));
MenuAdapter menuAdapter= new MenuAdapter(this,DataUtil.getMainMenus(menuIcons,menus));
mRecyclerViewMenu.setAdapter(menuAdapter);

The end !

相关文章

网友评论

      本文标题:RecyclerView的简单应用1

      本文链接:https://www.haomeiwen.com/subject/lgxvjktx.html