Android ViewPager之tab万能适配器
来源:互联网 发布:mac软件为什么无法删除 编辑:程序博客网 时间:2024/05/29 17:47
复杂的左右滑动页面,需要用到viewpager和fragment,下面制作一个万能tab适配器,tab可以填充布局。
public abstract class TabFragmentPagerAdapter<T> extends FragmentPagerAdapter { private List<String> list_title; private List<Fragment> list_fragment; private Context context; private TabLayout tabLayout; private ViewHolder viewHolder; private int layout_id = 0; private List<T> list_bean; private ViewPager viewPager; public TabFragmentPagerAdapter(Context context, FragmentManager fm, List<Fragment> fragments, List<String> list_title) { super(fm); this.context = context; this.list_title = list_title; this.list_fragment = fragments; } public TabFragmentPagerAdapter(Context context, FragmentManager fm, List<Fragment> fragments, List<String> list_title,ViewPager viewPager,TabLayout tabLayout) { super(fm); this.context = context; this.list_title = list_title; this.list_fragment = fragments; this.tabLayout=tabLayout; this.viewPager=viewPager; tabLayout.setupWithViewPager(viewPager); } public TabFragmentPagerAdapter(Context context, FragmentManager fm, List<Fragment> list_fragment, List<T> list_bean, ViewPager viewPager, TabLayout tabLayout, int layout_id) { super(fm); this.list_fragment = list_fragment; this.list_bean = list_bean; this.context = context; this.tabLayout = tabLayout; this.layout_id = layout_id; this.viewPager=viewPager; this.tabLayout.setupWithViewPager(this.viewPager); viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { onMyPageSelected(position); } @Override public void onPageScrollStateChanged(int state) { } }); } public int getCurrentPostion(){ return viewPager.getCurrentItem(); } public void onMyPageSelected(int position){} @Override public Fragment getItem(int position) { return list_fragment.get(position); } @Override public int getCount() { return list_fragment.size(); } @Override public CharSequence getPageTitle(int position) { if (list_title != null) { return list_title.get(position); } return null; } public void onCreateViewHolder() { if (layout_id == 0) { return; } int size = list_bean.size(); for (int i = 0; i < list_bean.size(); i++) { TabLayout.Tab tab = tabLayout.getTabAt(i); //为每个标签设置布局 tab.setCustomView(layout_id); viewHolder = new ViewHolder(tab.getCustomView()); if (i == 0) { onMyTabSelected(viewHolder,i); } onBindViewHolder(viewHolder, i); } this.tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { @Override public void onTabSelected(TabLayout.Tab tab) { onMyTabSelected(new ViewHolder(tab.getCustomView()), tab.getPosition()); } @Override public void onTabUnselected(TabLayout.Tab tab) { onMyTabUnselected(new ViewHolder(tab.getCustomView()), tab.getPosition()); } @Override public void onTabReselected(TabLayout.Tab tab) { } }); } public void onBindViewHolder(ViewHolder viewHolder, int position) { } public void onMyTabSelected(ViewHolder viewHolder, int position) { } public void onMyTabUnselected(ViewHolder viewHolder, int position) { }// public void setSelect(int position) {// for (int i = 0; i < list_bean.size(); i++) {//// TabLayout.Tab tab = tabLayout.getTabAt(i);// if (i == position) {// onMyTabSelected(new ViewHolder(tab.getCustomView()), position);//// } else {// onMyTabUnselected(new ViewHolder(tab.getCustomView()), position);//// }////// }// } public static class ViewHolder { private SparseArray<View> array_view; public View itemView; public ViewHolder(View itemView) { this.itemView = itemView; array_view = new SparseArray<View>(); } public <T extends View> T getView(int viewId) { View view = array_view.get(viewId); if (view == null) { view = itemView.findViewById(viewId); array_view.put(viewId, view); } return (T) view; } public void setText(int tv_id, String text) { TextView tv = getView(tv_id); tv.setText(text); } public void setText(int tv_id, int text) { TextView tv = getView(tv_id); tv.setText(String.valueOf(text)); } public void setTextColor(int tv_id, int color) { TextView tv = getView(tv_id); tv.setTextColor(color); } public void setBackgroundResource(int v_id, int resid) { View view = getView(v_id); view.setBackgroundResource(resid); } public void setOnClickListener(int res_id, View.OnClickListener onClickListener) { getView(res_id).setOnClickListener(onClickListener); } }}
tabFragmentPagerAdapter = new TabFragmentPagerAdapter<Map<Integer, String>>( MiaoshaActivity.this, getSupportFragmentManager(), list_fragment, list_map, viewPager, tabLayout, R.layout.item_miaosha_tab) { @Override public void onBindViewHolder(ViewHolder viewHolder, int position) { super.onBindViewHolder(viewHolder, position); viewHolder.setText(R.id.tv_top, list_map.get(position).get(0)); viewHolder.setText(R.id.tv_bottom, list_map.get(position).get(1)); } //tab选中时回调 @Override public void onMyTabSelected(ViewHolder viewHolder, int position) { super.onMyTabSelected(viewHolder, position); LogUtils.log("选中", position); potison_current = position; viewHolder.itemView.setBackgroundColor(getResources().getColor(R.color.red)); String end_time = list_end_time.get(position); if (Long.valueOf(list_end_time.get(potison_current)) - TimeAndAgeUtils.getCureentTimeStampLong()> 0l) { tv_time.setText(TimeAndAgeUtils.getDistance2CurrentTimeStamp(end_time)); if (map_thread.get(potison_current) == null) { scheduledPeriodThreadPool(potison_current); } } else { if (map_thread.get(potison_current) != null) { map_thread.get(potison_current).shutdownNow(); } tv_time.setText("已结束"); } } //tab未选中时回调 @Override public void onMyTabUnselected(ViewHolder viewHolder, int position) { super.onMyTabUnselected(viewHolder, position); viewHolder.itemView.setBackgroundColor(getResources().getColor(R.color.transparent)); } }; viewPager.setTabFragmentPagerAdapter(tabFragmentPagerAdapter);
参考:Android ViewPager
阅读全文
0 0
- Android ViewPager之tab万能适配器
- android万能适配器之SuperAdapter
- Android之listview万能适配器
- DataBinding的万能ViewPager适配器
- Android之万能适配器Adapter的使用
- Android开发之实现RecyclerView万能适配器
- Android之打造ListView的万能适配器
- Android RecylerView之万能适配器的实现
- Android开发之定义万能适配器
- ListView之万能适配器
- Android 万能适配器
- Android-打造万能适配器
- Android万能适配器
- Android中万能适配器
- Android 万能适配器
- Android--ListView--万能适配器
- Android 万能适配器
- Android 打造万能适配器
- 关于内部类 外部类面试题
- highcharts数据标签显示在柱状图里面解决办法
- TreeMap排序规则
- MFC基础教程
- Linux学习:I/O 映射(ioremap)和writel/readl
- Android ViewPager之tab万能适配器
- 文章标题 AngularJs购物车表格的制作
- 史无前例企业架构分享--SSM组合+springmvc+mybatis+shiro+restful+bootstrap
- Synchronize,Lock和volatile的区别
- 验证数字的正则表达式集 验证数字:^[0-9]*$ 验证n位的数字:^\d{n}$ 验证至少n位数字:^\d{n,}$ 验证m-n位的数字:^\d{m,n}$ 验证零和非零开头的数字:^(0
- 欢迎使用CSDN-markdown编辑器
- 深度学习-根据日志画loss-acc折线图
- JAVA虚拟机体系结构
- 中级javaScript之Sum All Numbers in a Range