모방 경 동상 점 시리즈 11 - --- 상품 정렬 기능 및 레이아웃 전환 실현 (Tablayot)

이 항목 은 채소 둥지 에서 왔 습 니 다. 관심 있 는 사람 이 클릭 하 세 요.http://www.cniao5.com/course/
프로젝트 가 완료 되 었 습 니 다.https://github.com/15829238397/CN5E-shop
모방 경 동상 점 시리즈 0 - ---- 프로젝트 소개 모방 경 동상 점 시리즈 1 - --- fragmentTabHost 실현 밑부분 내 비게 이 션 표시 줄 모방 경 동상 점 시리즈 2 - ---- 사용자 정의 toolbar 모방 경 동상 점 시리즈 3 - ---- 포장 Okhttp 모방 경 동상 점 시리즈 4 - --- 윤 방 광고 표시 줄 모방 경 동상 점 시리즈 5 - --- 상품 추천 표시 줄 모방 경 동상 점 시리즈 6 - --- 하 라 리 셋 상 라 로 딩 상품 목록모방 경 동상 점 시리즈 7 - --- 상품 분류 페이지 모방 경 동상 점 시리즈 8 - --- 사용자 정의 수량 컨트롤 러 모방 경 동상 점 시리즈 9 - --- 카 트 데이터 메모리 모방 경 동상 점 시리즈 10 - --- 카 트 추가, 카 트 관리 기능 실현 모방 동상 점 시리즈 11 - --- 상품 정렬 기능 및 레이아웃 전환 실현 (Tablayot)베 이 징 동상 점 시리즈 12 - --- 상품 상세 정보 전시 (nativie 와 html 상호작용) 베 이 징 동상 점 시리즈 13 - --- 상품 공유 (sharesdk) 베 이 징 동상 점 시리즈 14 - --- 사용자 로그 인 및 app 로그 인 베 이 징 동상 성 시리즈 15 - --- 사용자 등록 차단,SMSSDK 통합 모방 경 동상 점 시리즈 16 - - 지불 SDK 통합 모방 경 동상 점 시리즈 17 - 지불 기능 실현 모방 경 동상 점 시리즈 18 - xml 파일 읽 기 (주소 선택 기) 모방 경 동상 점 시리즈 19 - 구 궁 격 주문 전시 모방 경 동상 점 시리즈 20 - - - 종장
머리말
이번 에는 상품 목록 전시, 정렬 및 레이아웃 전환 기능, 낡은 규칙 을 소개 하고 효과 도 를 먼저 살 펴 보 겠 습 니 다.
상품 정렬. gif
Tablayout
Tablayot 의 기본 사용 을 모 르 겠 습 니 다. 찍 어 주세요.http://www.jianshu.com/p/6923f29a478e
내용.
  • 페이지 디자인: 1. 맨 위 는 사용자 정의 toolbar 이 고 오른쪽 끝 은 레이아웃 전환 단추 입 니 다.2. 다음은 Tablayot 입 니 다. 기본, 가격, 판 매 량, 세 멤버 가 있 습 니 다. 3. 아래 는 textView 카운터 입 니 다.4. 마지막 으로 Material RefreshLayout + RecyclerView 의 조합 으로 드 롭 다운 리 셋, 위 에서 미 끄 러 지 는 기능 이 있 습 니 다.레이아웃 코드 는 다음 과 같 습 니 다:
  • 
    
    
        
    
        
    
        
    
        
    
            
        
    
        
    
            
    
                
    
            
    
        
    
    
    
  • 기능 소개: 1. tablayot 의 하위 컨트롤 을 클릭 하면 fragment 는 네트워크 에서 서로 다른 데 이 터 를 얻 고 다시 불 러 옵 니 다.2. toolbar 오른쪽 에 있 는 레이아웃 전환 단 추 를 누 르 면 recyclerView 의 레이아웃 설정 을 바 꾸 고 다시 불 러 옵 니 다.
  • 코드 분석:
  • package com.example.shoppingstore;
    
    import android.content.Intent;
    import android.os.Build;
    import android.os.Bundle;
    import android.support.annotation.Nullable;
    import android.support.annotation.RequiresApi;
    import android.support.design.widget.TabLayout;
    import android.support.v7.app.AppCompatActivity;
    import android.support.v7.widget.GridLayoutManager;
    import android.support.v7.widget.LinearLayoutManager;
    import android.support.v7.widget.RecyclerView;
    import android.util.Log;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.widget.TextView;
    import android.widget.Toast;
    
    import com.cjj.MaterialRefreshLayout;
    import com.example.shoppingstore.Bean.Page;
    import com.example.shoppingstore.Bean.Ware;
    import com.example.shoppingstore.adapter.BaseAdapter;
    import com.example.shoppingstore.adapter.CartAdapter;
    import com.example.shoppingstore.adapter.ClassifyWaresAdapter;
    import com.example.shoppingstore.adapter.HotAdapter;
    import com.example.shoppingstore.fragment.HotFragment;
    import com.example.shoppingstore.utils.CartProvider;
    import com.example.shoppingstore.utils.Pager;
    import com.example.shoppingstore.widget.MyDivider;
    import com.example.shoppingstore.widget.PbToolbar;
    
    import java.util.List;
    
    /**
     * Created by   on 2017/7/19.
     */
    
    public class WareListActivity extends BaseActivity{
    
        private TabLayout showWaresTabs ;
        private HotAdapter hotAdapter ;
        private MaterialRefreshLayout materialRefreshLayout ;
        private RecyclerView recyclerView ;
        private Pager pager ;
        private Intent intent ;
        private PbToolbar pbToolbar ;
        private TextView showWaresNum ;
        private ClassifyWaresAdapter classifyWaresAdapter ;
        private TabLayout.Tab tab1 ;
        private TabLayout.Tab tab2 ;
        private TabLayout.Tab tab3 ;
    
        public static final int SHOW_ORDER_DEFAUT = 0 ;
        public static final int SHOW_ORDER_PRICE = 2 ;
        public static final int SHOW_ORDER_SALES = 1 ;
    
        public static int orderType = SHOW_ORDER_DEFAUT ;
    
        public static final int SHOW_TYPE_LINER = 0 ;
        public static final int SHOW_TYPE_GRID = 1 ;
    
        public static int showType = SHOW_TYPE_GRID ;
    
        @Override
        protected void onCreate(@Nullable Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            this.setContentView(R.layout.ware_list_activity);
    
            showWaresTabs = (TabLayout) findViewById(R.id.show_wares_tab);
            recyclerView = (RecyclerView) findViewById(R.id.recycleListView) ;
            materialRefreshLayout = (MaterialRefreshLayout) findViewById(R.id.materialRefreshLayout);
            pbToolbar = (PbToolbar) findViewById(R.id.toolBar) ;
            showWaresNum = (TextView) findViewById(R.id.show_wares_num) ;
    
            tab1 = showWaresTabs.newTab().setText(R.string.show_type_defaut).setTag(SHOW_ORDER_DEFAUT) ;
            tab2 = showWaresTabs.newTab().setText(R.string.show_type_price).setTag(SHOW_ORDER_PRICE) ;
            tab3 = showWaresTabs.newTab().setText(R.string.show_type_sales).setTag(SHOW_ORDER_SALES) ;
    
            showWaresTabs.addTab(tab1);
            showWaresTabs.addTab(tab2);
            showWaresTabs.addTab(tab3);
    
            intent = this.getIntent() ;
    
            addToobarListener() ;
            addTabItemListener() ;
            try {
                InitShowOrder() ;
            } catch (Exception e) {
                e.printStackTrace();
            }
    
            addShowStyleChengeListener() ;
    
        }
    
    
    
        /**
         *         
         */
        private void initShowWaresNum (){
            showWaresNum.setText( "   "+pager.getTotalCount()+"   " );
        }
    
        /**
         *            
         */
        public void addToobarListener(){
            pbToolbar.setLeftButtonIcOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    WareListActivity.this.finish();
                }
            });
        }
    
    
        /**
         *   tab        
         */
        private void addTabItemListener(){
            showWaresTabs.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
                @Override
                public void onTabSelected(TabLayout.Tab tab) {
                    if ((int)tab.getTag() != orderType){
                        orderType =(int)tab.getTag() ;
                        changeShowOrder(orderType);
                    }
                }
    
                @Override
                public void onTabUnselected(TabLayout.Tab tab) {
                }
    
                @Override
                public void onTabReselected(TabLayout.Tab tab) {
                }
            });
        }
    
        private void InitShowOrder() throws Exception {
            initMaterialRefrshLayoutListener() ;
        }
    
        private void changeShowOrder(int orderType){
            switch (orderType){
                case SHOW_ORDER_DEFAUT :
                    pager.changeParamsInUri("orderBy" , 0);
                    pager .changeParamsInUri("curPage" , 1);
                    pager.getData();
                    break;
                case SHOW_ORDER_SALES :
                    pager.changeParamsInUri("orderBy" , 1);
                    pager .changeParamsInUri("curPage" , 1);
                    pager.getData();
                    break;
                case SHOW_ORDER_PRICE :
                    pager.changeParamsInUri("orderBy" , 2);
                    pager .changeParamsInUri("curPage" , 1);
                    pager.getData();
                    break;
            }
        }
    
        private int getCampaignId (){
           return intent.getIntExtra("campaignId" , SHOW_ORDER_DEFAUT ) ;
        }
    
        /**
         *       
         */
        private void addShowStyleChengeListener(){
            pbToolbar.setRightImgeButtonIcOnClickListener(new View.OnClickListener() {
                @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
                @Override
                public void onClick(View v) {
                    Toast.makeText(WareListActivity.this , "    "+showType , Toast.LENGTH_SHORT).show();
                    try {
                        changeShowType();
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            });
        }
        @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
        private void changeShowType() throws Exception {
            switch (showType){
                case SHOW_TYPE_LINER :
                    initMaterialRefrshLayoutListener() ;
                    pbToolbar.setRightButtonIcon(R.drawable.icon_grid_32);
                    showType = SHOW_TYPE_GRID ;
                    break;
                case SHOW_TYPE_GRID :
                    initGridMaterialRefrshLayoutListener() ;
                    pbToolbar.setRightButtonIcon(R.drawable.icon_list_32);
                    showType = SHOW_TYPE_LINER ;
                    break;
            }
        }
    
        /**
         * Grid      
         * @throws Exception
         */
        public void initGridMaterialRefrshLayoutListener () throws Exception {
    
            String uri = "http://112.124.22.238:8081/course_api/wares/campaign/list" ;
    
            Pager.Builder builder = Pager.getBuilder()
                    .setMaterialRefreshLayout(materialRefreshLayout)
                    .putParams("campaignId" , getCampaignId())
                    .putParams("orderBy" , orderType)
                    .putParams("curPage" , 1)
                    .putParams("pageSize" , 10)
                    .setUri(uri)
                    .setOnPageListener(new Pager.OnPageListener() {
                        @Override
                        public void loadNormal(List mData, int totalPage, int pageSize) {
    
                            if( mData!=null && mData.size() > 0 ){
                                if(classifyWaresAdapter == null){
    
                                    classifyWaresAdapter = new ClassifyWaresAdapter(WareListActivity.this , mData);
                                    recyclerView.setAdapter(classifyWaresAdapter);
                                    recyclerView.setLayoutManager(new GridLayoutManager(WareListActivity.this , 2));
                                    recyclerView.addItemDecoration(new MyDivider());
                                    setClassifyWaresAdapterItemlistenler() ;
                                }else{
    
                                    classifyWaresAdapter.cleanData();
                                    classifyWaresAdapter.addData(mData);
                                    recyclerView.setAdapter(classifyWaresAdapter);
                                    recyclerView.setLayoutManager(new GridLayoutManager(WareListActivity.this , 2));
    
                                }
                            }else {
                                Toast.makeText(WareListActivity.this , "       " , Toast.LENGTH_SHORT) .show();
                            }
    
                        }
    
                        @Override
                        public void loadMoreData(List mData, int totalPage, int pageSize) {
                            classifyWaresAdapter.addData(mData);
                        }
    
                        @Override
                        public void refData(List mData, int totalPage, int pageSize) {
                            classifyWaresAdapter.cleanData();
                            classifyWaresAdapter.addData(mData);
                            recyclerView.scrollToPosition(0);
                        }
                    }) ;
    
            pager = builder.build(WareListActivity.this , Page.class) ;
        }
    
        /**
         * list      
         * @throws Exception
         */
        public void initMaterialRefrshLayoutListener () throws Exception {
    
            Log.d("----" , "-----------------" + "List") ;
    
            String uri = "http://112.124.22.238:8081/course_api/wares/campaign/list" ;
    
            Pager.Builder builder = Pager.getBuilder()
                    .setMaterialRefreshLayout(materialRefreshLayout)
                    .putParams("campaignId" , getCampaignId())
                    .putParams("orderBy" , orderType)
                    .putParams("curPage" , 1)
                    .putParams("pageSize" , 10)
                    .setUri(uri)
                    .setOnPageListener(new Pager.OnPageListener() {
                        @Override
                        public void loadNormal(List mData, int totalPage, int pageSize) {
                            if( mData!=null && mData.size() > 0 ){
                                if(hotAdapter == null) {
                                    hotAdapter = new HotAdapter(WareListActivity.this, mData);
                                    setHotAdapterItemlistenler();
                                    recyclerView.setAdapter(hotAdapter);
                                    recyclerView.setLayoutManager(new LinearLayoutManager(WareListActivity.this));
                                }else {
                                    hotAdapter.cleanData();
                                    hotAdapter.addData(mData);
                                    recyclerView.setAdapter(hotAdapter);
                                    recyclerView.setLayoutManager(new LinearLayoutManager(WareListActivity.this));
                                }
                            }else {
                                Toast.makeText(WareListActivity.this , "       " , Toast.LENGTH_SHORT) .show();
                            }
                            initShowWaresNum();
                        }
    
                        @Override
                        public void loadMoreData(List mData, int totalPage, int pageSize) {
                            hotAdapter.addData(mData);
                        }
    
                        @Override
                        public void refData(List mData, int totalPage, int pageSize) {
                            hotAdapter.cleanData();
                            hotAdapter.addData(mData);
                            recyclerView.scrollToPosition(0);
                        }
                    }) ;
    
            pager = builder.build(this , Page.class) ;
        }
    
        public void setClassifyWaresAdapterItemlistenler (){
    
            classifyWaresAdapter.setOnItemClickListener(new BaseAdapter.onItemClickListener() {
                @Override
                public void onClick(View view, int position) {
    
                    Ware ware = classifyWaresAdapter.getData(position);
                    Intent intent = new Intent(WareListActivity.this , WareDetialActivity.class);
                    intent.putExtra(Contents.WARE , ware);
    
                    startActivity(intent);
    
                }
            });
    
        }
    
        public void setHotAdapterItemlistenler (){
    
            hotAdapter.setOnItemClickListener(new BaseAdapter.onItemClickListener() {
                @Override
                public void onClick(View view, int position) {
    
                    if(view.getId() == R.id.buyButton){
                        addToCart(position) ;
                    }else {
    
                        Ware ware = hotAdapter.getData(position);
                        Intent intent = new Intent(WareListActivity.this , WareDetialActivity.class);
                        intent.putExtra(Contents.WARE , ware);
    
                        startActivity(intent);
                    }
    
                }
            });
    
        }
    
        public void addToCart( int position ){
    
            Ware hotGoodsMsgPart = hotAdapter.getData(position) ;
    
            CartProvider.getCartProvider(this) .put( hotGoodsMsgPart.toShoppinfCart() );
            Toast.makeText( this , "       " , Toast.LENGTH_SHORT ).show();
    
        }
    
    }
    
    

    1. 세 가지 정렬 방식 을 구별 하기 위해 세 가지 상 태 를 정의 하여 구분한다.2. Tab 을 누 르 면 정렬 상 태 를 바 꾸 고 RecyclerView 를 상태 에 따라 불 러 옵 니 다.3. 레이아웃 전환 을 클릭 하면 레이아웃 상 태 를 전환 하고 RecyclerView 를 상태 에 따라 불 러 옵 니 다.
    자, 이 페이지 는 여기까지 소개 하 겠 습 니 다.첫 번 째 git 주 소 를 누 르 면 원본 코드 를 봅 니 다.

    좋은 웹페이지 즐겨찾기