모방 경 동상 점 시리즈 11 - --- 상품 정렬 기능 및 레이아웃 전환 실현 (Tablayot)
프로젝트 가 완료 되 었 습 니 다.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
내용.
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 주 소 를 누 르 면 원본 코드 를 봅 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.