0
  • 最佳答案

    homepagefragment

    public class HomePageFragment extends BaseFragment implements ICategoryPagerCallback {
    
        private static final String TAG = "HomePageFragment";
        private ICategoryPagerPresenter mCategoryPagerPresenter;
        private String mTitle;
        private int mId;
        private HomePageContentAdapter mHomePageContentAdapter;
        private looperPagerAdapter mLooperPagerAdapter;
    
        public static HomePageFragment newInstance(Categories.DataBean category){
            Log.d(TAG,"homepagerfragment-----");
             HomePageFragment homePageFragment =new HomePageFragment();
            Bundle bundle = new Bundle();
            bundle.putInt(Constants.KEY_HOME_PAGER_MATERIAL_ID,category.getId());
            bundle.putString(Constants.KEY_HOME_PAGER_TITLE,category.getTitle());
            Log.d(TAG,"title---"+category.getTitle());
    
            homePageFragment.setArguments(bundle);//设置数据
             return homePageFragment;
        }
        @BindView(R.id.home_pager_title)
        public TextView currenttitle;
        @BindView(R.id.looper_point_container)
        public LinearLayout looperPointContainer;
         @BindView(R.id.home_pager_content_list)
         public RecyclerView mContentList;
         @BindView(R.id.looper_pager)
        public ViewPager looperpager;
        @Override
        protected int getRootViewResId() {
    
            return R.layout.fragment_homepager;
        }
    
        @Override
        protected void initListener() {
            looperpager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
                @Override
                public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
    
                }
    
                @Override
                public void onPageSelected(int position) {
                         LogUtils.d(this,"SIZE----"+mLooperPagerAdapter.getDataSize());
                    int dataSize = mLooperPagerAdapter.getDataSize();
                    int targetposition=1;
                    if (dataSize==0){
                        dataSize++;
                    }
                        targetposition = position%dataSize;
                     updateLooperIndicator(targetposition);
                    //切换指示器
    
    
                }
    
                private void updateLooperIndicator(int targetposition) {
                    for (int i = 0; i < looperPointContainer.getChildCount(); i++) {
                        View view = looperPointContainer.getChildAt(i);
                        if (i==targetposition){
                            view.setBackgroundResource(R.drawable.shape_indicator_point);
                            }else {
                                view.setBackgroundResource(R.drawable.shape_indicator_point_noromal);
                            }
    
                    }
    
                }
    
                @Override
                public void onPageScrollStateChanged(int state) {
    
                }
            });
        }
    
        @Override
        protected void initview(View view) {
           //设置布局管理器
            setUpState(State.SUCCESS);
            mContentList.setLayoutManager(new LinearLayoutManager(getContext()));
            mContentList.addItemDecoration(new RecyclerView.ItemDecoration() {
    
                @Override
                public void getItemOffsets(@NonNull Rect outRect, @NonNull View view, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) {
                   outRect.top=5;
                   outRect.bottom=5;
    
                }
            });
            mHomePageContentAdapter = new HomePageContentAdapter();
            //设置适配器
            mContentList.setAdapter(mHomePageContentAdapter);
            //创建轮播图适配器
            mLooperPagerAdapter = new looperPagerAdapter();
            looperpager.setAdapter(mLooperPagerAdapter);
        }
    
        @Override
        protected void initPresenter() {
            //不同的分类需要拿到不同的对象,所以需要创建单例来节省资源
            mCategoryPagerPresenter = CategoryPagePresenterimpl.getIntance();
            mCategoryPagerPresenter.registerViewCallback(this);//注册接口
        }
    
    
        @Override
        public void onContentLoaded(List<HomePagerContent.DataDTO> contents,int categoryId) {
          //TODO:更新UI
            setUpState(State.SUCCESS);
            mHomePageContentAdapter.setData(contents);
        }
    
        @Override
        public void onLoading(int categoryId) {
    
            setUpState(State.LOADING);
        }
    
        @Override
        public void onError(int categoryId) {
               setUpState(State.ERROR);
    
        }
    
        @Override
        public void onEmpty(int categoryId) {
    
        }
    
        @Override
        public int getCategoryId() {
            return mId;
        }
    
        @Override
        public void onLoaderMoreError(int categoryId) {
    
        }
    
        @Override
        public void onLoaderMoreEmpty(int categoryId) {
    
        }
    
        @Override
        public void onLoaderMoreSuccess(List<HomePagerContent.DataDTO> contents, int categoryId) {
    
        }
    
        @Override
        public void onLooperListLoaded(List<HomePagerContent.DataDTO> contents, int categoryId) {
            LogUtils.d(HomePageFragment.this,"looperlist----"+contents.size());
            //在这里传入数据
            mLooperPagerAdapter.setData(contents);
          //设置到中间点
            int dx = (Integer.MAX_VALUE/2)%contents.size();
            int targetCenterPosition = (Integer.MAX_VALUE / 2) - dx;
            looperpager.setCurrentItem(targetCenterPosition);
            //添加点
            for (int i = 0; i < contents.size(); i++) {
                View view = new View(getContext());
                int size = SizeUtils.dip2px(getContext(), 8);
                LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(size,size);
                layoutParams.leftMargin =SizeUtils.dip2px(getContext(),5);
                layoutParams.rightMargin =SizeUtils.dip2px(getContext(),5);
                view.setLayoutParams(layoutParams);
                if (i==0){
                    view.setBackgroundResource(R.drawable.shape_indicator_point);
                }else {
                    view.setBackgroundResource(R.drawable.shape_indicator_point_noromal);
                }
            looperPointContainer.addView(view);
            }
    
        }
    
        @Override
        protected void loadData() {
            Bundle arguments = getArguments();
            Log.d(TAG,"arguments-----"+arguments);
            if (arguments!=null){
                mTitle = arguments.getString(Constants.KEY_HOME_PAGER_TITLE);
                mId = arguments.getInt(Constants.KEY_HOME_PAGER_MATERIAL_ID);
                Log.d(TAG,"TITLE-------"+mTitle);
                Log.d(TAG,"id-------"+mId);
            }
            //todo:加载数据(通过presenter去加载数据)
            if (mCategoryPagerPresenter!=null){
                Log.d(TAG,"load data----");
                mCategoryPagerPresenter.getContentByCategoryId(mId);
            }
            if (currenttitle!=null){
                currenttitle.setText(mTitle );
            }
        }
    
        @Override
        protected void release() {
            if (mCategoryPagerPresenter != null) {
                mCategoryPagerPresenter.unregisterViewCallback(this);
            }
        }
    }
    


    1459787886420312066  评论     打赏       GE
    相关问题
    kissmyass · 安卓
    2019-12-11 04:41 713 2
    珂珂范范 · 安卓
    2019-12-19 00:59 559 2
    2020-01-31 00:31 693 2
    谁都不许动我的砖 · 安卓 / xml
    2020-02-05 19:16 1184 2
    谁都不许动我的砖 · 安卓
    2020-02-06 06:24 764 2
    珂珂范范 · 安卓模拟器
    2020-02-21 11:10 842 2
    珂珂范范 · 安卓
    2020-02-29 23:50 429 2
    mercenary · 安卓
    2020-03-22 02:34 358 2
    哦豁! · 安卓报错
    2020-03-22 23:17 684 4
    Pancica · 安卓
    2020-03-23 02:13 520 2
    Pancica · 安卓
    2020-03-30 08:22 452 2
    kuro · 安卓
    2020-04-04 00:17 417 4