MainActivity.java
public class MainActivity extends AppCompatActivity {
@BindView(R.id.main_pager)
ViewPager mViewPager;
@BindView(R.id.main_group)
RadioGroup mRadioGroup;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
mViewPager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {
@Override
public Fragment getItem(int position) {
Fragment fragment=null;
switch (position){
case 0:
fragment = new SortFragment();
break;
case 1:
fragment = new ShopListShowFragment();
break;
case 2:
fragment = new CartFragment();
break;
case 3:
fragment = new OtherFragment();
break;
case 4:
fragment = new MyFragment();
break;
}
return fragment;
}
@Override
public int getCount() {
return 5;
}
});
mRadioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup radioGroup, int i) {
switch (i){
case R.id.r1:
mViewPager.setCurrentItem(0);
break;
case R.id.r2:
mViewPager.setCurrentItem(1);
break;
case R.id.r3:
mViewPager.setCurrentItem(2);
break;
case R.id.r4:
mViewPager.setCurrentItem(3);
break;
case R.id.r5:
mViewPager.setCurrentItem(4);
break;
}
}
});
}
}
activity_main.xml
SortFragment.java
public class SortFragment extends Fragment implements IView{
@BindView(R.id.cart_rv)
RecyclerView mRecyclerView;
@BindView(R.id.cart_elv)
ExpandableListView mExpandableListView;
private IPrecenterImpl mIPrecenter;
private int cid=1;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = View.inflate(getActivity(), R.layout.fragment_sort, null);
ButterKnife.bind(this,view);
mIPrecenter = new IPrecenterImpl(this);
requestData();
return view;
}
private void requestData() {
mIPrecenter.requestData(Apis.URL_SORT_LEFT,null, SortLeftBean.class,0);
Map map = new HashMap<>();
map.put("cid",cid+"");
mIPrecenter.requestData(Apis.URL_SORT_RIGHT,map, SortRightBean.class,1);
}
@Override
public void showData(Object data) {
if (data instanceof SortLeftBean){
SortLeftBean sortLeftBean = (SortLeftBean) data;
List data1 = sortLeftBean.getData();
SortLeftAdapter sortLeftAdapter = new SortLeftAdapter(getActivity(), data1);
mRecyclerView.setAdapter(sortLeftAdapter);
mRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity(),LinearLayoutManager.VERTICAL,false));
mRecyclerView.addItemDecoration(new DividerItemDecoration(getActivity(),DividerItemDecoration.VERTICAL));
sortLeftAdapter.setOnItemClickListener(new SortLeftAdapter.onItemClickListener() {
@Override
public void onItemClick(int layoutPosition) {
cid=layoutPosition;
Map map = new HashMap<>();
map.put("cid",cid+"");
mIPrecenter.requestData(Apis.URL_SORT_RIGHT,map, SortRightBean.class,1);
}
});
}else if (data instanceof SortRightBean){
SortRightBean sortRightBean = (SortRightBean) data;
List data1 = sortRightBean.getData();
SortRightAdapter rightAdapter = new SortRightAdapter(getActivity(), data1);
mExpandableListView.setAdapter(rightAdapter);
for (int i=0;i
fragment_sort.xml
SortLeftAdapter.java
public class SortLeftAdapter extends RecyclerView.Adapter{
private Context mContext;
private List list;
public SortLeftAdapter(Context context, List list) {
mContext = context;
this.list = list;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = View.inflate(parent.getContext(), R.layout.item_left, null);
ViewHolder holder = new ViewHolder(view);
return holder;
}
public interface onItemClickListener{
void onItemClick(int layoutPosition);
}
private onItemClickListener mOnItemClickListener;
public void setOnItemClickListener(onItemClickListener onItemClickListener){
mOnItemClickListener=onItemClickListener;
}
@Override
public void onBindViewHolder(@NonNull final ViewHolder holder, int position) {
holder.mTextView.setText(list.get(position).getName());
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int layoutPosition = holder.getLayoutPosition();
mOnItemClickListener.onItemClick(layoutPosition);
}
});
}
@Override
public int getItemCount() {
return list.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
@BindView(R.id.item_left_text)
TextView mTextView;
public ViewHolder(View itemView) {
super(itemView);
ButterKnife.bind(this,itemView);
}
}
}
SortRightAdapter.java
public class SortRightAdapter extends BaseExpandableListAdapter{
private Context mContext;
private List list;
public SortRightAdapter(Context context, List list) {
mContext = context;
this.list = list;
}
@Override
public int getGroupCount() {
return list.size();
}
@Override
public int getChildrenCount(int i) {
return list.get(i).getList().size();
}
@Override
public View getGroupView(int i, boolean b, View view, ViewGroup viewGroup) {
GroupViewHolder groupViewHolder;
if (view==null){
groupViewHolder = new GroupViewHolder();
view = View.inflate(viewGroup.getContext(), R.layout.item_right_group, null);
groupViewHolder.mTextView = view.findViewById(R.id.item_right_group_text);
view.setTag(groupViewHolder);
}else {
groupViewHolder = (GroupViewHolder) view.getTag();
}
groupViewHolder.mTextView.setText(list.get(i).getName());
return view;
}
@Override
public View getChildView(int i, int i1, boolean b, View view, ViewGroup viewGroup) {
ChildViewHolder childViewHolder;
if (view==null){
childViewHolder = new ChildViewHolder();
view = View.inflate(viewGroup.getContext(), R.layout.item_right_child, null);
childViewHolder.mImageView = view.findViewById(R.id.item_right_child_img);
childViewHolder.mTextView = view.findViewById(R.id.item_right_child_text);
view.setTag(childViewHolder);
}else {
childViewHolder = (ChildViewHolder) view.getTag();
}
childViewHolder.mTextView.setText(list.get(i).getList().get(i1).getName());
Glide.with(mContext).load(list.get(i).getList().get(i1).getIcon()).into(childViewHolder.mImageView);
return view;
}
class GroupViewHolder{
TextView mTextView;
}
class ChildViewHolder{
ImageView mImageView;
TextView mTextView;
}
@Override
public Object getGroup(int i) {
return null;
}
@Override
public Object getChild(int i, int i1) {
return null;
}
@Override
public long getGroupId(int i) {
return 0;
}
@Override
public long getChildId(int i, int i1) {
return 0;
}
@Override
public boolean hasStableIds() {
return false;
}
@Override
public boolean isChildSelectable(int i, int i1) {
return false;
}
}
ShopListShowFragment.java //列表展示
public class ShopListShowFragment extends Fragment implements IView{
@BindView(R.id.show_rv)
RecyclerView mRecyclerView;
private IPrecenterImpl mIPrecenter;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = View.inflate(getActivity(), R.layout.fragment_shop_list_show, null);
ButterKnife.bind(this,view);
mIPrecenter = new IPrecenterImpl(this);
mIPrecenter.requestData(Apis.URL_LIST_SHOW,null, ListShowBean.class,0);
return view;
}
@Override
public void showData(Object data) {
if (data instanceof ListShowBean){
ListShowBean listShowBean = (ListShowBean) data;
List data1 = listShowBean.getData();
ListShowAdapter showAdapter = new ListShowAdapter(getActivity(), data1);
mRecyclerView.setAdapter(showAdapter);
mRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity(),LinearLayoutManager.VERTICAL,false));
mRecyclerView.addItemDecoration(new DividerItemDecoration(getActivity(),DividerItemDecoration.VERTICAL));
showAdapter.setOnItemClickListener(new ListShowAdapter.onItemClickListener() {
@Override
public void onItemClick(int pid) {
EventBus.getDefault().postSticky(pid);
Intent intent = new Intent(getActivity(), DetailActivity.class);
intent.putExtra("pid", pid);
startActivity(intent);
}
});
}
}
}
ListShowAdapter.java
public class ListShowAdapter extends RecyclerView.Adapter{
private Context mContext;
private List list;
public ListShowAdapter(Context context, List list) {
mContext = context;
this.list = list;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = View.inflate(parent.getContext(), R.layout.item_list_show, null);
ViewHolder holder = new ViewHolder(view);
return holder;
}
public interface onItemClickListener{
void onItemClick(int layoutPosition);
}
private onItemClickListener mOnItemClickListener;
public void setOnItemClickListener(onItemClickListener onItemClickListener){
mOnItemClickListener=onItemClickListener;
}
@Override
public void onBindViewHolder(@NonNull final ViewHolder holder, final int position) {
holder.mTextView_title.setText(list.get(position).getTitle());
holder.mTextView_price.setText(list.get(position).getPrice()+"");
String images = list.get(position).getImages();
Pattern compile = Pattern.compile("\\|");
String[] split = compile.split(images);
holder.mSimpleDraweeView.setImageURI(split[0]);
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int pid = list.get(position).getPid();
mOnItemClickListener.onItemClick(pid);
}
});
}
@Override
public int getItemCount() {
return list.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
@BindView(R.id.item_list_show_text_title)
TextView mTextView_title;
@BindView(R.id.item_list_show_text_price)
TextView mTextView_price;
@BindView(R.id.item_list_show_img)
SimpleDraweeView mSimpleDraweeView;
public ViewHolder(View itemView) {
super(itemView);
ButterKnife.bind(this,itemView);
}
}
}
DetailActivity.java
public class DetailActivity extends AppCompatActivity implements IView{
@BindView(R.id.detail_vp)
ViewPager mViewPager;
@BindView(R.id.detail_text_title)
TextView mTextView_title;
@BindView(R.id.detail_text_price)
TextView mTextView_price;
private IPrecenterImpl mIPrecenter;
int mpid;
int pid;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_detail);
ButterKnife.bind(this);
EventBus.getDefault().register(this);
mIPrecenter = new IPrecenterImpl(this);
Intent intent = getIntent();
pid = intent.getIntExtra("pid", 1);
Map map = new HashMap<>();
map.put("pid",pid+"");
mIPrecenter.requestData(Apis.URL_DETAIL,map, DetailBean.class,1);
}
@Subscribe(threadMode=ThreadMode.MAIN,sticky = true)
public void getPid(int pid){
mpid=pid;
}
@OnClick(R.id.detail_btn)
public void onBtnClickListener(){
Map map = new HashMap<>();
map.put("uid",109+"");
map.put("pid",pid+"");
mIPrecenter.requestData(Apis.URL_ADD_CART,map, AddCartBean.class,1);
}
@Override
public void showData(Object data) {
if (data instanceof DetailBean){
DetailBean detailBean= (DetailBean) data;
DetailBean.DataBean data1 = detailBean.getData();
String images = data1.getImages();
Pattern compile = Pattern.compile("\\|");
String[] split = compile.split(images);
BannerAdapter bannerAdapter = new BannerAdapter(DetailActivity.this, split);
mViewPager.setAdapter(bannerAdapter);
mTextView_title.setText(data1.getTitle());
mTextView_price.setText(data1.getPrice()+"");
}else if (data instanceof AddCartBean){
AddCartBean addCartBean = (AddCartBean) data;
Toast.makeText(DetailActivity.this,addCartBean.getMsg(),Toast.LENGTH_SHORT).show();
}
}
@Override
protected void onDestroy() {
super.onDestroy();
mIPrecenter.onDetach();
EventBus.getDefault().unregister(this);
}
}
BannerAdapter.java
public class BannerAdapter extends PagerAdapter{
private Context mContext;
private String[] split;
public BannerAdapter(Context context, String[] split) {
mContext = context;
this.split = split;
}
@Override
public int getCount() {
return split.length;
}
@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
return view==object;
}
@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {
ImageView imageView = new ImageView(container.getContext());
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
Glide.with(mContext).load(split[position]).into(imageView);
container.addView(imageView);
return imageView;
}
@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
container.removeView((View) object);
}
}
activity_detail.java
OtherFragment.java
public class OtherFragment extends Fragment{
@BindView(R.id.player_list_video)
JCVideoPlayerStandard mJCVideoPlayerStandard;
@BindView(R.id.other_img)
ImageView mImageView_data;
private String path = Environment.getExternalStorageDirectory()+"/qaz.png";
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = View.inflate(getActivity(), R.layout.fragment_other, null);
ButterKnife.bind(this,view);
boolean setUp = mJCVideoPlayerStandard.setUp("http://ips.ifeng.com/video19.ifeng.com/video09/2014/06/16/1989823-102-086-0009.mp4", JCVideoPlayer.SCREEN_LAYOUT_LIST, "");
if (setUp) {
Glide.with(getActivity()).load("http://a4.att.hudong.com/05/71/01300000057455120185716259013.jpg").into(mJCVideoPlayerStandard.thumbImageView);
}
return view;
}
@OnClick(R.id.other_click)
public void onImgClick(){
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle("图片");
builder.setMessage("上传的途径");
builder.setCancelable(true);
builder.setPositiveButton("相机", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Intent intent=new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(path)));
startActivityForResult(intent,1000);
}
});
builder.setNegativeButton("相册", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Intent intent=new Intent(Intent.ACTION_PICK);
intent.setType("image/*");
startActivityForResult(intent,2000);
}
});
builder.show();
}
@Override
public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 2000 & resultCode == getActivity().RESULT_OK) {
Uri uri = data.getData();
Intent intent = new Intent("com.android.camera.action.CROP");
intent.setDataAndType(uri, "image/*");
intent.putExtra("crop", true);
intent.putExtra("aspactX", 1);
intent.putExtra("aspactY", 1);
intent.putExtra("outputX", 70);
intent.putExtra("outputY", 70);
intent.putExtra("return-data", true);
startActivityForResult(intent, 3000);
} else if (requestCode == 1000 & resultCode == getActivity().RESULT_OK) {
Intent intent = new Intent("com.android.camera.action.CROP");
intent.setDataAndType(Uri.fromFile(new File(path)), "image/*");
intent.putExtra("crop", true);
intent.putExtra("aspactX", 1);
intent.putExtra("aspactY", 1);
intent.putExtra("outputX", 70);
intent.putExtra("outputY", 70);
intent.putExtra("return-data", true);
startActivityForResult(intent, 3000);
}
if (requestCode == 3000 & resultCode == getActivity().RESULT_OK) {
Bitmap bitmap = data.getParcelableExtra("data");
mImageView_data.setImageBitmap(bitmap);
}
}
}
fragment_other.xml
Apis.java
public class Apis {
public static final String URL_SORT_LEFT="product/getCatagory";
public static final String URL_SORT_RIGHT="product/getProductCatagory";
public static final String URL_LIST_SHOW="product/getProducts?pscid=40";
public static final String URL_DETAIL="product/getProductDetail";
public static final String URL_ADD_CART="product/addCart";
public static final String URL_CART_SHOW="product/getCarts?uid=109";
}
RetrofitManager.java
public class RetrofitManager {
private static RetrofitManager mRetrofitManager;
private static final String BASE_URL="http://www.zhaoapi.cn/";
private final BaseApis mBaseApis;
private RetrofitManager() {
OkHttpClient okHttpClient = new OkHttpClient.Builder()
.readTimeout(5000, TimeUnit.MILLISECONDS)
.writeTimeout(5000,TimeUnit.MILLISECONDS)
.connectTimeout(5000,TimeUnit.MILLISECONDS)
.retryOnConnectionFailure(true)
.build();
Retrofit retrofit = new Retrofit.Builder()
.client(okHttpClient)
.baseUrl(BASE_URL)
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.build();
mBaseApis = retrofit.create(BaseApis.class);
}
public static synchronized RetrofitManager getInstance(){
if (mRetrofitManager==null){
mRetrofitManager=new RetrofitManager();
}
return mRetrofitManager;
}
private Observer getObserver(final HttpListener httpListener){
Observer mObserver=new Observer() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(ResponseBody responseBody) {
try {
String json = responseBody.string();
httpListener.onResponse(json);
} catch (IOException e) {
e.printStackTrace();
}
}
};
return mObserver;
}
public void get(String url,HttpListener httpListener){
mBaseApis.get(url)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(getObserver(httpListener));
}
public void post(String url, Map map, HttpListener httpListener){
if (map==null){
map=new HashMap<>();
}
mBaseApis.post(url,map)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(getObserver(httpListener));
}
public interface HttpListener{
void onFail();
void onResponse(String json);
}
private HttpListener mHttpListener;
public void setHttpListener(HttpListener httpListener){
mHttpListener=httpListener;
}
}