RecyclerView新增頭部
阿新 • • 發佈:2019-01-02
一、Adapter中資料
二、Fragment中package com.example.jiangshuncongykcs.adapter; import android.content.Context; import android.support.v7.widget.RecyclerView; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import com.bumptech.glide.Glide; import com.example.jiangshuncongykcs.JsonBean; import com.example.jiangshuncongykcs.R; import java.util.List; /** * Created by */ public class MyAdapter extends RecyclerView.Adapter<MyAdapter.mViewHolder> { private List<JsonBean.DataBean> list; private Context context; private View mHeaderView; public static final int TYPE_HEADER = 0; public static final int TYPE_NORMAL = 1; public MyAdapter(List<JsonBean.DataBean> list, Context context) { this.list = list; this.context = context; } @Override public mViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { if(mHeaderView != null && viewType == TYPE_HEADER) return new mViewHolder(mHeaderView); View inflate = View.inflate(context, R.layout.item, null); mViewHolder holder = new mViewHolder(inflate); return holder; } @Override public void onBindViewHolder(mViewHolder holder, int position) { JsonBean.DataBean dataBean = list.get(position); if(getItemViewType(position) == TYPE_HEADER) return; if(holder instanceof mViewHolder) { Glide.with(context).load(dataBean.getUserImg()).into(holder.iv_icon); holder.tv_msg.setText(dataBean.getIntroduction()); } } public void setHeaderView(View headerView) { mHeaderView = headerView; notifyItemInserted(0); } public View getHeaderView() { return mHeaderView; } @Override public int getItemCount() { return list.size(); } @Override public int getItemViewType(int position) { if(mHeaderView == null) return TYPE_NORMAL; if(position == 0) return TYPE_HEADER; return TYPE_NORMAL; } class mViewHolder extends RecyclerView.ViewHolder{ ImageView iv_icon; TextView tv_msg; public mViewHolder(View itemView) { super(itemView); iv_icon = itemView.findViewById(R.id.iv_icon); tv_msg = itemView.findViewById(R.id.tv_msg); } } }
package com.example.jiangshuncongykcs; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.support.v7.widget.DividerItemDecoration; import android.support.v7.widget.LinearLayoutManager; 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.bumptech.glide.Glide; import com.example.jiangshuncongykcs.adapter.MyAdapter; import com.google.gson.Gson; import com.jcodecraeer.xrecyclerview.XRecyclerView; import com.stx.xhb.xbanner.XBanner; import com.stx.xhb.xbanner.transformers.Transformer; import java.io.IOException; import java.util.ArrayList; import java.util.List; import okhttp3.Call; import okhttp3.Callback; import okhttp3.FormBody; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; /** * Created by 蔣順聰 on 2017/10/25. */ public class Fragment1 extends Fragment{ private View view; private XBanner vp_viewpager; private List<String> list = new ArrayList<>(); private XRecyclerView rv_recyclerview; private int page = 1; List<JsonBean.DataBean> data2 = new ArrayList<>(); private MyAdapter adapter; private View view2; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { view = View.inflate(getContext(), R.layout.fragment1_layout, null); return view; } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); initview(); initdata(); // 為XBanner繫結資料 vp_viewpager.setData(list, null); // XBanner適配資料 vp_viewpager.setmAdapter(new XBanner.XBannerAdapter() { @Override public void loadBanner(XBanner banner, View view, int position) { Glide.with(getContext()).load(list.get(position)).into((ImageView) view); } }); // 設定XBanner的頁面切換特效 vp_viewpager.setPageTransformer(Transformer.Default); // 設定XBanner頁面切換的時間,即動畫時長 vp_viewpager.setPageChangeDuration(500); initmsg(page); } private void initmsg(int page2) { OkHttpClient intance = OkHttpUtils.getIntance(); FormBody.Builder builder = new FormBody.Builder(); builder.add("sign","C7548DE604BCB8A17592EFB9006F9265"); builder.add("pageSize","20"); builder.add("gender","2"); builder.add("ts","1871746850"); builder.add("page",page2+""); Request request = new Request.Builder().url(API.url).post(builder.build()).build(); intance.newCall(request).enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { System.out.println("請求出錯了"); } @Override public void onResponse(Call call, Response response) throws IOException { if(response != null && response.isSuccessful()){ String string = response.body().string(); JXJson(string); } } }); } private void JXJson(String string) { JsonBean jsonBean = new Gson().fromJson(string, JsonBean.class); List<JsonBean.DataBean> data = jsonBean.getData(); data2.addAll(data); getActivity().runOnUiThread(new Runnable() { @Override public void run() { if(adapter == null){ adapter = new MyAdapter(data2,getContext()); rv_recyclerview.setAdapter(adapter); }else{ adapter.notifyDataSetChanged(); } //為Recycler新增頭部 setHeader(rv_recyclerview); } }); } private void initdata() { list.add("http://img3.imgtn.bdimg.com/it/u=1875076909,3610813998&fm=27&gp=0.jpg"); list.add("http://img5.imgtn.bdimg.com/it/u=2832476711,2379932980&fm=27&gp=0.jpg"); list.add("http://img5.imgtn.bdimg.com/it/u=1944582709,2686578056&fm=27&gp=0.jpg"); list.add("http://img3.imgtn.bdimg.com/it/u=1708842930,3481574449&fm=27&gp=0.jpg"); } private void initview() { view2 = View.inflate(getContext(), R.layout.addhead, null); vp_viewpager = view2.findViewById(R.id.vp_viewpager); rv_recyclerview = view.findViewById(R.id.rv_recyclerview); rv_recyclerview.setLayoutManager(new LinearLayoutManager(getContext())); rv_recyclerview.addItemDecoration(new DividerItemDecoration(getContext(),DividerItemDecoration.VERTICAL)); rv_recyclerview.setLoadingListener(new XRecyclerView.LoadingListener() { @Override public void onRefresh() { //重新整理操作 data2.clear(); adapter = null; page = 1; initmsg(page); rv_recyclerview.refreshComplete(); } @Override public void onLoadMore() { //載入更多的操作 page++; initmsg(page); rv_recyclerview.loadMoreComplete(); } }); } //新增頭部的方法 private void setHeader(XRecyclerView view) { adapter.setHeaderView(view2); } }