切换网格和列表使用MVP 并且一个适配器的两个布局
MainActivity
private IPersenterImpl iPersenter;
private XRecyclerView recyclerView;
private boolean isLiear=true;
private int mPager=1;
private MineAdapter adapter;
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
iPersenter=new IPersenterImpl(this);
recyclerView=findViewById(R.id.recycleView);
button=findViewById(R.id.qiehuan);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
getsponse();
loadData();
}
});
recyclerView.setLoadingMoreEnabled(true);
recyclerView.setPullRefreshEnabled(true);
recyclerView.setLoadingListener(new XRecyclerView.LoadingListener() {
@Override
public void onRefresh() {
mPager=1;
loadData();
}
@Override
public void onLoadMore() {
mPager++;
loadData();
}
});
loadData();
getsponse();
}
private void loadData() {
Map<String,String> params=new HashMap<>();
params.put("page",mPager+"");
iPersenter.getRequest(Apis.TYPE_TITLE,params,UserBean.class);
}
public void getsponse(){
if(isLiear){
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
linearLayoutManager.setOrientation(OrientationHelper.VERTICAL);
recyclerView.setLayoutManager(linearLayoutManager);
}else{
GridLayoutManager layoutManager = new GridLayoutManager(this, 2);
layoutManager.setOrientation(OrientationHelper.VERTICAL);
recyclerView.setLayoutManager(layoutManager);
}
adapter = new MineAdapter(isLiear, this);
recyclerView.setAdapter(adapter);
adapter.setOnClickListsner(new MineAdapter.OnClickListsner() {
@Override
public void onClick(int position) {
Intent intent = new Intent(MainActivity.this, LoginActivity.class);
intent.putExtra("name",position);
startActivity(intent);
}
});
isLiear=!isLiear;
}
@Override
public void onSuccess(Object data) {
if(data instanceof UserBean){
UserBean userBean= (UserBean) data;
if(mPager==1){
adapter.setDatas(userBean.getData());
}else{
adapter.addDatas(userBean.getData());
}
}
recyclerView.loadMoreComplete();
recyclerView.refreshComplete();
}
@Override
protected void onDestroy() {
super.onDestroy();
iPersenter.deteach();
}
Adapter
public boolean isLiear=true;
private List<UserBean.DataBean> mDatas;
private Context context;
public MineAdapter(boolean isLiear, Context context) {
this.isLiear = isLiear;
this.context = context;
mDatas=new ArrayList<>();
}
public void setDatas(List<UserBean.DataBean> datas) {
// this.mDatas = mDatas;
mDatas.clear();
mDatas.addAll(datas);
notifyDataSetChanged();
}
public void addDatas(List<UserBean.DataBean> datas) {
// this.mDatas = mDatas;
// mDatas.clear();
mDatas.addAll(datas);
notifyDataSetChanged();
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
ViewHolder viewHolder=null;
if(isLiear) {
View view = LayoutInflater.from(context).inflate(R.layout.item, viewGroup, false);
viewHolder=new ViewHolder(view);
}else{
View view = LayoutInflater.from(context).inflate(R.layout.gitem, viewGroup, false);
viewHolder=new ViewHolder(view);
}
return viewHolder;
}
@Override
public void onBindViewHolder(@NonNull ViewHolder viewHolder, final int i) {
Glide.with(context).load(mDatas.get(i).getThumbnail_pic_s()).into(viewHolder.imageView);
viewHolder.textView.setText(mDatas.get(i).getTitle());
viewHolder.textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onClickListsner.onClick(i);
}
});
}
@Override
public int getItemCount() {
return mDatas.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
private ImageView imageView;
private TextView textView;
public ViewHolder(@NonNull View itemView) {
super(itemView);
imageView=itemView.findViewById(R.id.image);
textView=itemView.findViewById(R.id.text_title);
}
}
OnClickListsner onClickListsner;
public void setOnClickListsner(OnClickListsner onClickListsner){
this.onClickListsner=onClickListsner;
}
public interface OnClickListsner {
void onClick(int position);
}
详细的MVP层详见