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);
}
}
}
}