1.BaseFragment
package com.example.jingdong.ui.base; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import com.example.jingdong.R; import com.example.jingdong.inter.IBase; import javax.inject.Inject; public abstract class BaseFragment<T extends BaseContract.BasePresenter> extends Fragment implements IBase,BaseContract.BaseView { @Inject protected T mPresenter; @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); inject(); if (mPresenter!=null){ mPresenter.attachView(this); } } @Override public void onDestroy() { super.onDestroy(); mPresenter.detachView(); } @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(getContentLayout(), container,false); initView(view); return view; } @Override public void showLoading() { } @Override public void dismissLoading() { } }
2.xrecycleview适配器
package com.example.week1duanzi.adapter; import android.content.Context; import android.support.annotation.NonNull; import android.support.v7.widget.RecyclerView; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import com.example.week1duanzi.R; import com.example.week1duanzi.bean.DuanziBean; import com.facebook.drawee.view.SimpleDraweeView; import java.util.List; public class DuanziAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { private Context context; private List<DuanziBean.DataBean> list; private LayoutInflater inflater; public DuanziAdapter(Context context, List<DuanziBean.DataBean> list) { this.context = context; this.list = list; inflater = LayoutInflater.from(context); } @NonNull @Override public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = inflater.inflate(R.layout.xrv_layout, parent, false); return new MyViewHolder(view); } @Override public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) { DuanziBean.DataBean dataBean = list.get(position); MyViewHolder myViewHolder = (MyViewHolder) holder; String imgUrls = (String) dataBean.getImgUrls(); String imgUrl = ""; if (!TextUtils.isEmpty(imgUrls)) { imgUrl = imgUrls.split("\\|")[0]; } myViewHolder.iv.setImageURI(imgUrl); myViewHolder.tvName.setText(dataBean.getUser().getNickname() + ""); myViewHolder.tvTime.setText(dataBean.getCreateTime()); } @Override public int getItemCount() { return list.size(); } private class MyViewHolder extends RecyclerView.ViewHolder { private final SimpleDraweeView iv; private final TextView tvName; private final TextView tvTime; public MyViewHolder(View itemView) { super(itemView); iv = itemView.findViewById(R.id.img); tvName = itemView.findViewById(R.id.tv_name); tvTime = itemView.findViewById(R.id.tv_time); } } public void refresh(List<DuanziBean.DataBean> tempList) { //清楚原先集合里的内容 this.list.clear(); this.list.addAll(tempList); notifyDataSetChanged(); } public void loadMore(List<DuanziBean.DataBean> tempList) { this.list.addAll(tempList); notifyDataSetChanged(); } public int getListNum(){ return this.list.size(); } }
3.fragment页面
package com.example.week1duanzi.ui.duanzi; import android.support.v7.widget.LinearLayoutManager; import android.view.View; import com.example.app.MyApp; import com.example.week1duanzi.R; import com.example.week1duanzi.adapter.DuanziAdapter; import com.example.week1duanzi.bean.DuanziBean; import com.example.week1duanzi.bean.MyDataBean; import com.example.week1duanzi.bean.MyDataBeanDao; import com.example.week1duanzi.component.DaggerHttpComponent; import com.example.week1duanzi.ui.base.BaseFragment; import com.example.week1duanzi.ui.duanzi.contract.DuanziContract; import com.example.week1duanzi.ui.duanzi.presenter.DuanziPresenter; import com.jcodecraeer.xrecyclerview.XRecyclerView; import java.util.ArrayList; import java.util.List; public class DuanziFragment extends BaseFragment<DuanziPresenter> implements DuanziContract.View { private XRecyclerView xlv; private List<DuanziBean.DataBean> list = new ArrayList<>(); private DuanziAdapter adapter; private boolean isRefresh = true; private int page = 1; @Override public int getContentLayout() { return R.layout.fragment_duanzi; } @Override public void initView(View view) { xlv = view.findViewById(R.id.xrl); xlv.setLayoutManager(new LinearLayoutManager(getContext())); adapter = new DuanziAdapter(getContext(), list); xlv.setAdapter(adapter); //判断数据库中是否有数据 MyDataBeanDao myDataBeanDao = MyApp.getDaoSession().getMyDataBeanDao(); List<MyDataBean> list = myDataBeanDao.queryBuilder().build().list(); if (list != null && list.size() > 0) { //说明数据库有数据 } else { mPresenter.getDuanzi(page + ""); } //设置刷新和加载更多监听 xlv.setLoadingListener(new XRecyclerView.LoadingListener() { @Override public void onRefresh() { //刷新 page = 1; isRefresh = true; mPresenter.getDuanzi(page + ""); } @Override public void onLoadMore() { //加载更多 page++; isRefresh = false; mPresenter.getDuanzi(page + ""); } }); } @Override public void inject() { DaggerHttpComponent.builder() .build() .inject(this); } @Override public void onSuccess(List<DuanziBean.DataBean> list) { if (isRefresh) { adapter.refresh(list); xlv.refreshComplete(); } else { adapter.loadMore(list); int listNum = adapter.getListNum(); xlv.loadMoreComplete(); int size = list.size(); int count = listNum + size; if (count >= 20) { xlv.setLoadingMoreEnabled(false); } } } }