首先在module的build.gradle中导入资源
dependencies{ ***
***
implementation 'androidx.recyclerview:recyclerview:1.1.0'
}
要与用的sdk相同或者就是这样1.1.0的
在java代码中
package com.example.mytest.fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.viewpager.widget.ViewPager;
import com.example.mytest.R;
import com.example.mytest.adapter.MainHeaderADAdapter;
import com.example.mytest.adapter.MainMenuAdapter;
import com.example.mytest.util.DataUtil;
public class MainFragment extends Fragment {
//menu菜单图标
protected ViewPager mVPagerHeaderAD;//广告头部
protected int []icons={R.drawable.header_pic_ad1,R.drawable.header_pic_ad2,R.drawable.header_pic_ad1};
protected int []menuIons={R.drawable.menu_airport,R.drawable.menu_car,
R.drawable.menu_course,R.drawable.menu_hatol,R.drawable.menu_nearby,
R.drawable.huoche,R.drawable.menu_ticket,R.drawable.menu_train};
protected int []secondMenus={R.drawable.menu_second_airport,
R.drawable.menu_second_play,R.drawable.menu_second_quan};
String []menus;
String [] secondStrMenus;
protected RecyclerView mRecyclerViewMenu;//主菜单
protected RecyclerView mRecyclerSecondViewMenu;//二级主菜单
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_main,null);
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
menus=this.getActivity().getResources().getStringArray(R.array.main_menu);
secondStrMenus=this.getActivity().getResources().getStringArray(R.array.main_second_menu);//获取字符串数组
mVPagerHeaderAD=(ViewPager) getView().findViewById(R.id.vpager_main_header_ad);
mRecyclerViewMenu=(RecyclerView) getView().findViewById(R.id.recycleview_main_menu);
mRecyclerSecondViewMenu=(RecyclerView)getActivity().findViewById(R.id.recycleview_main_second_menu);// 绑定区域
MainHeaderADAdapter adapter=new MainHeaderADAdapter(getActivity(), DataUtil.getHeaderAddInfo(getActivity(),icons));
mVPagerHeaderAD.setAdapter(adapter);
//菜单
//布局样式
mRecyclerViewMenu.setLayoutManager(new GridLayoutManager(getActivity(),4));
MainMenuAdapter mainMenuAdapter=new MainMenuAdapter(getActivity(),DataUtil.getMainMenu(menuIons,menus));
mRecyclerViewMenu.setAdapter(mainMenuAdapter);
//二级布局
mRecyclerSecondViewMenu.setLayoutManager(new GridLayoutManager(getActivity(),3));
MainMenuAdapter mainSecondMenuAdapter=new MainMenuAdapter(getActivity(),DataUtil.getMainMenu(secondMenus,secondStrMenus));
mRecyclerSecondViewMenu.setAdapter(mainSecondMenuAdapter);
}
}
这里用到的字符传输组是在写在布局文件中的
<resources>
<string name="app_name">MyTest</string>
<string-array name="main_menu">
<item>飞机票</item>
<item>住酒店</item>
<item>去旅游</item>
<item>周边游</item>
<item>买门票</item>
<item>火车票</item>
<item>汽车票</item>
<item>领里程</item>
</string-array>
<string-array name="main_second_menu">
<item>国际机票</item>
<item>签证服务</item>
<item>飞机接送</item>
</string-array>
</resources>
总结
先有两个存放了文字和图片id的数组
将recyclerview的对象绑定id
mRecyclerSecondViewMenu=// 绑定区域(RecyclerView)getActivity().findViewById(R.id.recycleview_main_second_menu); //设置管理器,(参1容器就是当前类,参2列数) mRecyclerSecondViewMenu.setLayoutManager(new GridLayoutManager(getActivity(),3)); //适配器(参1容器,参2调用方法得到一个集合,DataUtil.getMainMenu中处理图片与文字放到List<Menu>中Menu很简单只有两个变量为图片id与String文字) MainMenuAdapter mainSecondMenuAdapter=new MainMenuAdapter(getActivity(),DataUtil.getMainMenu(secondMenus,secondStrMenus)); //将适配器放入recyclerView对象中 mRecyclerSecondViewMenu.setAdapter(mainSecondMenuAdapter);