至于为何要这么做,无需多言,相信大家深有体会。
先上主布局文件以及item布局文件,
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.jingchen.pulltorefresh.PullToRefreshLayout
android:id="@+id/refresh_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@mipmap/icon_11_11">
<com.jingchen.pulltorefresh.PullableRecyclerView
android:id="@+id/homeRecommend_RecyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#f4f5f9"
android:horizontalSpacing="10dp"
android:numColumns="2"
android:verticalSpacing="10dp"/>
</com.jingchen.pulltorefresh.PullToRefreshLayout>
</RelativeLayout>
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/root_RelativeLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#FFFFFF">
<ImageView
android:id="@+id/goods_ImageView"
android:layout_width="175dp"
android:layout_height="175dp"
android:layout_centerHorizontal="true"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:src="@mipmap/goodsimagetest"/>
<TextView
android:id="@+id/goodsname_TextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/goods_ImageView"
android:layout_centerHorizontal="true"
android:ellipsize="end"
android:maxEms="14"
android:singleLine="true"
android:text="恋白茹时尚两件套装棉麻牛仔裙韩版女装衣服春秋呵呵呵呵呵呵"
android:textColor="#000000"
android:textSize="14dp"/>
<TextView
android:id="@+id/goodstrueprice_TextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@id/goodsname_TextView"
android:layout_below="@id/goodsname_TextView"
android:layout_marginTop="5dp"
android:text="¥198"
android:textColor="#ff00"
android:textSize="17dp"/>
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@id/goodstrueprice_TextView"
android:layout_toRightOf="@id/goodstrueprice_TextView">
<TextView
android:id="@+id/goodsoldprice_TextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@id/goodsname_TextView"
android:text="¥498"
android:textColor="#999999"
android:textSize="12dp"/>
<TextView
android:layout_width="match_parent"
android:layout_height="2px"
android:layout_gravity="center_vertical"
android:background="#999999"/>
</FrameLayout>
</RelativeLayout>
Fragment代码片段:
pullToRefreshLayout = (PullToRefreshLayout) findViewById(R.id.refresh_view);
homeRecommend_RecyclerView = (PullableRecyclerView) pullToRefreshLayout.getPullableView();
‘ homeRecommendGoodsRecyclerViewAdapter = new HomeRecommendGoodsRecyclerViewAdapter(context, homeRecommend_RecyclerView, list1, homeRecommend_RecyclerView_HeaderView);
homeRecommend_RecyclerView_HeaderView为头布局,随意写。
设置recyclerView为gridview模式,并重写setSpanSizeLookup函数解决头布局只占据gridview第一个item位置的问题 final GridLayoutManager gridLayoutManager = new GridLayoutManager(context, 2);
// gridLayoutManager.setAutoMeasureEnabled(false);
gridLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup()
{
@Override
public int getSpanSize(int position)
{
return homeRecommendGoodsRecyclerViewAdapter.isHeader(position) ? gridLayoutManager.getSpanCount() : 1;
}
});
homeRecommend_RecyclerView.setLayoutManager(gridLayoutManager);
// homeRecommend_RecyclerView.setHasFixedSize(false);
homeRecommend_RecyclerView.setAdapter(homeRecommendGoodsRecyclerViewAdapter);
Adapter完整代码:
package com.maoyudun.alimamaproject.adapter;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.annotation.TargetApi;
import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.os.Build;
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.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.alibaba.baichuan.android.trade.AlibcTrade;
import com.alibaba.baichuan.android.trade.callback.AlibcTradeCallback;
import com.alibaba.baichuan.android.trade.constants.AlibcConstants;
import com.alibaba.baichuan.android.trade.model.AlibcShowParams;
import com.alibaba.baichuan.android.trade.model.AlibcTaokeParams;
import com.alibaba.baichuan.android.trade.model.OpenType;
import com.alibaba.baichuan.android.trade.model.TradeResult;
import com.alibaba.baichuan.android.trade.page.AlibcBasePage;
import com.alibaba.baichuan.android.trade.page.AlibcDetailPage;
import com.jingchen.pulltorefresh.WrapRecyclerView;
import com.maoyudun.alimamaproject.R;
import com.maoyudun.alimamaproject.bean.Aitaobao_item;
import com.maoyudun.alimamaproject.bean.HomeRecommendGoodsInfo;
import com.maoyudun.alimamaproject.util.DataUtilImpl;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.assist.FailReason;
import com.nostra13.universalimageloader.core.listener.ImageLoadingListener;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* Created by Administrator on 2016/10/20.
* 推荐adapater
*/
public class HomeRecommendGoodsRecyclerViewAdapter extends BaseAutoLoadMoreAdapter<HomeRecommendGoodsInfo>
{
/**
* item类型
* */
private static final int ITEM_VIEW_TYPE_HEADER = 0;
private static final int ITEM_VIEW_TYPE_ITEM = 1;
/**
* 头布局
* */
private View header;
private ArrayList<HomeRecommendGoodsInfo> mDatas;
private Context context;
private int layoutID = R.layout.homerecommendgoodsgridviewitem;
private LayoutInflater mInflater;
private ImageLoader imageLoader = ImageLoader.getInstance();
private DataUtilImpl dataUtilImpl = DataUtilImpl.getInstance();
public HomeRecommendGoodsRecyclerViewAdapter(Context context, WrapRecyclerView recyclerView, ArrayList<HomeRecommendGoodsInfo> data, View header)
{
super(context, recyclerView, data);
this.mDatas = data;
this.context = context;
this.mInflater = LayoutInflater.from(context);
this.header = header;
}
@Override
public BaseViewHolder onCreateBaseViewHolder(ViewGroup parent, int viewType)
{
if (viewType == ITEM_VIEW_TYPE_HEADER)
{
return new BaseViewHolder(header);
}
else
{
return new ViewHolder(mInflater.inflate(layoutID, parent, false));
}
}
@Override
public int getItemHeight(RecyclerView.ViewHolder holder)
{
holder.itemView.measure(0, 0);
return holder.itemView.getMeasuredHeight();
}
@Override
public void onBindBaseViewHolder(BaseViewHolder holder, final int position)
{
/**
* item类型为头布局,直接返回头布局,否则解析item进行数据填充
* */
if (isHeader(position))
{
return;
}
else
{
final ViewHolder finalViewHolder = (ViewHolder) holder;
/**
* 因为添加头部局而把item数量加一,所以获取数据时,position 应该减一
* */
// imageLoader.loadImage(mDatas.get(position - 1).getImageurl(), new ImageLoadingListener()
// {
// @Override
// public void onLoadingStarted(String imageUri, View view)
// {}
//
// @Override
// public void onLoadingFailed(String imageUri, View view, FailReason failReason)
// {}
//
// @TargetApi(Build.VERSION_CODES.JELLY_BEAN)
// @Override
// public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage)
// {
// if(!loadedImage.isRecycled())
// {
// System.out.println("i交话费机会股价大幅估计是都不能不给哦就关机普尔那口");
// loadedImage = dataUtilImpl.scaleBitmap(loadedImage, (float) 0.4375);
// finalViewHolder.goodsImage.setImageBitmap(loadedImage);
// finalViewHolder.goodsImage.animate().alpha(1f).setDuration(200)
// .setListener(new AnimatorListenerAdapter()
// {
// @Override
// public void onAnimationEnd(Animator animation)
// {
// finalViewHolder.goodsImage.setVisibility(View.VISIBLE);
// super.onAnimationEnd(animation);
// }
// });
// }
// }
//
// @Override
// public void onLoadingCancelled(String imageUri, View view)
// {}
// });
// finalViewHolder.goodsName.setText(mDatas.get(position).getName());
// finalViewHolder.goodsOldprice.setText(mDatas.get(position).getOldprice());
// finalViewHolder.goodsTrueprice.setText(mDatas.get(position).getTrueprice());
// finalViewHolder.ll.setOnClickListener(new View.OnClickListener()
// {
// @Override
// public void onClick(View v)
// {}
// });
}
}
@Override
public int getItemCount()
{
/**
* 因为添加了头布局,所以数量加一
* */
return mDatas.size() + 1;
}
@Override
public int getItemViewType(int position)
{
/**
* 第一个布局即为头布局
* */
return isHeader(position) ? ITEM_VIEW_TYPE_HEADER : ITEM_VIEW_TYPE_ITEM;
}
/**
* 判断是否是头布局
* */
public boolean isHeader(int position)
{
if(position == 0)
{
return true;
}
return false;
}
public class ViewHolder extends BaseViewHolder
{
public ImageView goodsImage;
public TextView goodsName;
public TextView goodsTrueprice;
public TextView goodsOldprice;
public RelativeLayout ll;
public ViewHolder(View itemView)
{
super(itemView);
goodsImage = (ImageView) itemView.findViewById(R.id.goods_ImageView);
goodsName = (TextView) itemView.findViewById(R.id.goodsname_TextView);
goodsTrueprice = (TextView) itemView.findViewById(R.id.goodstrueprice_TextView);
goodsOldprice = (TextView) itemView.findViewById(R.id.goodsoldprice_TextView);
ll = (RelativeLayout) itemView.findViewById(R.id.root_RelativeLayout);
}
}
}
第一次写,不太完整,请勿喷。有问题请加扣扣:1401429109,细细沟通。
附带:PulltoRefreshLibiry类库。