几种常用Adapter

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);

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值