1.RecyclerViewAdapter
人丑话不多,直接撸代码:
public class MainMenuAdapter extends RecyclerView.Adapter <MainMenuAdapter.MainMenuViewholder>{
//上下文
public Context context;
//菜单集合
public List<Menu> menuList;
//带参构造
public MainMenuAdapter(Context context, List<Menu> menuList) {
this.context = context;
this.menuList = menuList;
}
//通过加载布局来返回view视图
@NonNull
@Override
public MainMenuViewholder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
return new MainMenuViewholder(LayoutInflater.from(context).inflate(R.layout.item_main_menu,null));
}
//从集合中获得数据,从而设置布局控件中的内容
@Override
public void onBindViewHolder(@NonNull MainMenuViewholder mainMenuViewholder, int i) {
Menu menu=menuList.get(i);
mainMenuViewholder.mImageView.setImageResource(menu.icon);
mainMenuViewholder.mTextView.setText(menu.menuName);
}
@Override
public int getItemCount() {
//如果menuList不为空,则返回集合大小,否则返回0
return null!=menuList?menuList.size():0;
}
//自定义一个Viewholder继承RecyclerView.ViewHolder,进行控件初始化
class MainMenuViewholder extends RecyclerView.ViewHolder{
public ImageView mImageView;
public TextView mTextView;
public MainMenuViewholder(@NonNull View itemView) {
super(itemView);
mImageView=itemView.findViewById(R.id.icon_main_menu);
mTextView=itemView.findViewById(R.id.text_main_menu);
}
}
}
java代码中如何使用:
MainMenuAdapter mainMenuAdapter=new MainMenuAdapter(getContext(), DataUtil.getMainMenu(icons,names));
//设置布recyclerView_main_menu的局样式(横、竖、网格)
//默认是横向布局(即默认参数是1)
recyclerView_main_menu.setLayoutManager(new GridLayoutManager(getContext(),4,1,false));
recyclerView_main_menu.setAdapter(mainMenuAdapter);
2.ListViewAdapter
public class MainMenuListViewAdapter extends BaseAdapter{
private Context context;
private List<MyListerView> listerViewList;
//带参构造
public MainMenuListViewAdapter(Context context, List<MyListerView> listerViewList) {
this.context = context;
this.listerViewList = listerViewList;
}
@Override
public int getCount() {
return null!=listerViewList?listerViewList.size():0;
}
@Override
public MyListerView getItem(int i) {
return listerViewList.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
view=View.inflate(context, R.layout.listview_item_main_menu,null);
MyListerView myListerView=getItem(i);
//初始化控件
ImageView image_listView_main_menu=view.findViewById(R.id.image_listView_main_menu);
TextView title_listView_main_menu=view.findViewById(R.id.title_listView_main_menu);
TextView detial_listView_main_menu=view.findViewById(R.id.detial_listView_main_menu);
//设置控件内容
image_listView_main_menu.setImageResource(myListerView.icon);
title_listView_main_menu.setText(myListerView.title);
detial_listView_main_menu.setText(myListerView.detial);
//返回view
return view;
}
}
java代码中如何使用:
//创建列表适配器
MainMenuListViewAdapter mainMenuListViewAdapter=new MainMenuListViewAdapter(getContext(),DataUtil.getMainMenuListView(list_icons,list_titles,list_detials));
//为列表设置适配器
listView_main_menu.setAdapter(mainMenuListViewAdapter);
可以动态加载string中的数据:
string.xml文件
<string-array name="main_menu">
<item>飞机票</item>
<item>住酒店</item>
<item>去旅游</item>
<item>周边游</item>
<item>买门票</item>
<item>火车票</item>
<item>汽车票</item>
<item>领里程</item>
</string-array>
java代码中获取数据
//从string中获取自定义的字符串数据
menu_names=this.getActivity().getResources().getStringArray(R.array.main_menu);