1.图片下载缓存库:Picasso
使用:Picasso.with(context).load("http://i.imgur.com/DvpvklR.png").into(imageView);
Picasso介绍:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2014/0731/1639.html
2.Campaign
/*
*Campaign.java
*Created on 2015/10/3 下午10:34 by Ivan
*Copyright(c)2014 Guangzhou Onion Information Technology Co., Ltd.
*http://www.cniao5.com
*/
package cniao5.com.cniao5shop.bean;
import java.io.Serializable;
public class Campaign implements Serializable {
private Long id;
private String title;
private String imgUrl;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getImgUrl() {
return imgUrl;
}
public void setImgUrl(String imgUrl) {
this.imgUrl = imgUrl;
}
}
3.HomeCampaign
/*
*CampaignRecommendEx.java
*Created on 2015/10/4 上午12:12 by Ivan
*Copyright(c)2014 Guangzhou Onion Information Technology Co., Ltd.
*http://www.cniao5.com
*/
package cniao5.com.cniao5shop.bean;
import java.io.Serializable;
/**
* Copyright(c)2014 Guangzhou Onion Information Technology Co., Ltd.
* http://www.cniao5.com
*/
public class HomeCampaign implements Serializable {
private Long id;
private String title;
private Campaign cpOne;
private Campaign cpTwo;
private Campaign cpThree;
public Campaign getCpOne() {
return cpOne;
}
public void setCpOne(Campaign cpOne) {
this.cpOne = cpOne;
}
public Campaign getCpTwo() {
return cpTwo;
}
public void setCpTwo(Campaign cpTwo) {
this.cpTwo = cpTwo;
}
public Campaign getCpThree() {
return cpThree;
}
public void setCpThree(Campaign cpThree) {
this.cpThree = cpThree;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
}
4.HomeCatgoryAdapter
package cniao5.com.cniao5shop.adapter;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.squareup.picasso.Picasso;
import java.util.List;
import cniao5.com.cniao5shop.R;
import cniao5.com.cniao5shop.bean.Campaign;
import cniao5.com.cniao5shop.bean.HomeCampaign;
/**
* Created by Ivan on 15/9/30.
*/
public class HomeCatgoryAdapter extends RecyclerView.Adapter<HomeCatgoryAdapter.ViewHolder> {
private static int VIEW_TYPE_L=0;
private static int VIEW_TYPE_R=1;
private LayoutInflater mInflater;
private List<HomeCampaign> mDatas;
private Context mContext;
public HomeCatgoryAdapter(List<HomeCampaign> datas,Context context){
mDatas = datas;
this.mContext = context;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int type) {
mInflater = LayoutInflater.from(viewGroup.getContext());
if(type == VIEW_TYPE_R){
return new ViewHolder(mInflater.inflate(R.layout.template_home_cardview2,viewGroup,false));
}
return new ViewHolder(mInflater.inflate(R.layout.template_home_cardview,viewGroup,false));
}
@Override
public void onBindViewHolder(ViewHolder viewHolder, int i) {
HomeCampaign homeCampaign = mDatas.get(i);
viewHolder.textTitle.setText(homeCampaign.getTitle());
Picasso.with(mContext).load(homeCampaign.getCpOne().getImgUrl()).into(viewHolder.imageViewBig);
Picasso.with(mContext).load(homeCampaign.getCpTwo().getImgUrl()).into(viewHolder.imageViewSmallTop);
Picasso.with(mContext).load(homeCampaign.getCpThree().getImgUrl()).into(viewHolder.imageViewSmallBottom);
}
@Override
public int getItemCount() {
return mDatas.size();
}
@Override
public int getItemViewType(int position) {
if(position % 2==0){
return VIEW_TYPE_R;
}
else return VIEW_TYPE_L;
}
//需要在ViewHolder中绑定监听事件
class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
TextView textTitle;
ImageView imageViewBig;
ImageView imageViewSmallTop;
ImageView imageViewSmallBottom;
public ViewHolder(View itemView) {
super(itemView);
textTitle = (TextView) itemView.findViewById(R.id.text_title);
imageViewBig = (ImageView) itemView.findViewById(R.id.imgview_big);
imageViewSmallTop = (ImageView) itemView.findViewById(R.id.imgview_small_top);
imageViewSmallBottom = (ImageView) itemView.findViewById(R.id.imgview_small_bottom);
imageViewBig.setOnClickListener(this);
imageViewSmallTop.setOnClickListener(this);
imageViewSmallBottom.setOnClickListener(this);
}
@Override
public void onClick(View v) {
HomeCampaign homeCampaign = mDatas.get(getLayoutPosition());
if(mListener !=null){
switch (v.getId()){
case R.id.imgview_big:
mListener.onClick(v,homeCampaign.getCpOne());
break;
case R.id.imgview_small_top:
mListener.onClick(v,homeCampaign.getCpTwo());
break;
case R.id.imgview_small_bottom:
mListener.onClick(v,homeCampaign.getCpThree());
break;
}
}
}
}
private OnCampaignClickListener mListener;
public void setOnCampaignClickListener(OnCampaignClickListener listener){
this.mListener = listener;
}
public interface OnCampaignClickListener{
void onClick(View view,Campaign campaign);
}
}
5.HomeFragment
package cniao5.com.cniao5shop.fragment;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
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.view.ViewGroup;
import android.widget.Toast;
import com.daimajia.slider.library.Animations.DescriptionAnimation;
import com.daimajia.slider.library.SliderLayout;
import com.daimajia.slider.library.SliderTypes.BaseSliderView;
import com.daimajia.slider.library.SliderTypes.TextSliderView;
import com.daimajia.slider.library.Tricks.ViewPagerEx;
import com.google.gson.Gson;
import com.squareup.okhttp.Request;
import com.squareup.okhttp.Response;
import java.util.List;
import cniao5.com.cniao5shop.Contants;
import cniao5.com.cniao5shop.R;
import cniao5.com.cniao5shop.adapter.DividerItemDecortion;
import cniao5.com.cniao5shop.adapter.HomeCatgoryAdapter;
import cniao5.com.cniao5shop.bean.Banner;
import cniao5.com.cniao5shop.bean.Campaign;
import cniao5.com.cniao5shop.bean.HomeCampaign;
import cniao5.com.cniao5shop.http.BaseCallback;
import cniao5.com.cniao5shop.http.OkHttpHelper;
import cniao5.com.cniao5shop.http.SpotsCallBack;
/**
* Created by Ivan on 15/9/25.
*/
public class HomeFragment extends Fragment {
private SliderLayout mSliderLayout;
// private PagerIndicator indicator;
private RecyclerView mRecyclerView;
private HomeCatgoryAdapter mAdatper;
private static final String TAG="HomeFragment";
private Gson mGson = new Gson();
private List<Banner> mBanner;
private OkHttpHelper httpHelper = OkHttpHelper.getInstance();
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_home,container,false);
mSliderLayout = (SliderLayout) view.findViewById(R.id.slider);
// indicator= (PagerIndicator) view.findViewById(R.id.custom_indicator);
requestImages();
initRecyclerView(view);
return view;
}
private void requestImages(){
String url ="http://112.124.22.238:8081/course_api/banner/query?type=1";
httpHelper.get(url, new SpotsCallBack<List<Banner>>(getContext()){
@Override
public void onSuccess(Response response, List<Banner> banners) {
mBanner = banners;
initSlider();
}
@Override
public void onError(Response response, int code, Exception e) {
}
});
}
private void initRecyclerView(View view) {
mRecyclerView = (RecyclerView) view.findViewById(R.id.recyclerview);
httpHelper.get(Contants.API.CAMPAIGN_HOME, new BaseCallback<List<HomeCampaign>>() {
@Override
public void onBeforeRequest(Request request) {
}
@Override
public void onFailure(Request request, Exception e) {
}
@Override
public void onResponse(Response response) {
}
@Override
public void onSuccess(Response response, List<HomeCampaign> homeCampaigns) {
initData(homeCampaigns);
}
@Override
public void onError(Response response, int code, Exception e) {
}
});
}
private void initData(List<HomeCampaign> homeCampaigns){
mAdatper = new HomeCatgoryAdapter(homeCampaigns,getActivity());
mAdatper.setOnCampaignClickListener(new HomeCatgoryAdapter.OnCampaignClickListener() {
@Override
public void onClick(View view, Campaign campaign) {
Toast.makeText(getContext(),"title="+campaign.getTitle(),Toast.LENGTH_LONG).show();
}
});
mRecyclerView.setAdapter(mAdatper);
mRecyclerView.addItemDecoration(new DividerItemDecortion());
mRecyclerView.setLayoutManager(new LinearLayoutManager(this.getActivity()));
}
private void initSlider(){
if(mBanner !=null){
for (Banner banner : mBanner){
TextSliderView textSliderView = new TextSliderView(this.getActivity());
textSliderView.image(banner.getImgUrl());
textSliderView.description(banner.getName());
textSliderView.setScaleType(BaseSliderView.ScaleType.Fit);
mSliderLayout.addSlider(textSliderView);
}
}
mSliderLayout.setPresetIndicator(SliderLayout.PresetIndicators.Center_Bottom);
mSliderLayout.setCustomAnimation(new DescriptionAnimation());
mSliderLayout.setPresetTransformer(SliderLayout.Transformer.RotateUp);
mSliderLayout.setDuration(3000);
mSliderLayout.addOnPageChangeListener(new ViewPagerEx.OnPageChangeListener() {
@Override
public void onPageScrolled(int i, float v, int i1) {
Log.d(TAG,"onPageScrolled");
}
@Override
public void onPageSelected(int i) {
Log.d(TAG,"onPageSelected");
}
@Override
public void onPageScrollStateChanged(int i) {
Log.d(TAG,"onPageScrollStateChanged");
}
});
}
@Override
public void onDestroy() {
super.onDestroy();
mSliderLayout.stopAutoCycle();
}
}