1.布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".activity.MainActivity"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:orientation="horizontal"
>
<TextView
android:layout_width="match_parent"
android:layout_height="50dp"
android:text="首页"
android:textSize="20sp"
android:layout_weight="1"
android:textColor="#000"/>
<ImageView
android:id="@+id/qiehuan"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/linear"/>
</LinearLayout>
<com.jcodecraeer.xrecyclerview.XRecyclerView
android:id="@+id/xrecyclerview"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
线性:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/linear"
android:orientation="horizontal">
<ImageView
android:id="@+id/icon"
android:layout_width="100dp"
android:layout_height="100dp"
android:src="@drawable/ic_launcher_background"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#000"
android:text="sss"/>
<TextView
android:id="@+id/price"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#000"
android:text="sss"/>
</LinearLayout>
</LinearLayout>
//网格
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/linear"
android:orientation="vertical">
<ImageView
android:id="@+id/icon"
android:layout_width="100dp"
android:layout_height="100dp"
/>
<TextView
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="#000"
android:text="sss"/>
<TextView
android:id="@+id/price"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="#000"
android:text="sss"/>
</LinearLayout>
2.主页面
package com.bw.ymy.products.activity;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.LinearLayoutManager;
import android.view.View;
import android.widget.ImageView;
import com.bw.ymy.products.R;
import com.bw.ymy.products.adapter.MyBase;
import com.bw.ymy.products.bean.UserBean;
import com.bw.ymy.products.presenter.IPresenterILP;
import com.bw.ymy.products.view.IView;
import com.jcodecraeer.xrecyclerview.XRecyclerView;
import java.util.HashMap;
import java.util.Map;
public class MainActivity extends AppCompatActivity implements View.OnClickListener,IView {
private XRecyclerView xRecyclerView;
private ImageView qiehaun;
private MyBase adapter;
private int page=1;
private IPresenterILP iPresenterILP;
private boolean isLinear=true;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//获取资源id
xRecyclerView=findViewById(R.id.xrecyclerview);
qiehaun=findViewById(R.id.qiehuan);
//实列化
iPresenterILP=new IPresenterILP(this);
//点击
qiehaun.setOnClickListener(this);
xRecyclerView.setLoadingMoreEnabled(true);
xRecyclerView.setPullRefreshEnabled(true);
xRecyclerView.setLoadingListener(new XRecyclerView.LoadingListener() {
@Override
public void onRefresh() {
page=1;
loda();
}
@Override
public void onLoadMore() {
loda();
}
});
isLayoutManager();
}
//切换
public void isLayoutManager()
{
if(isLinear)
{
LinearLayoutManager layoutManager=new LinearLayoutManager(this);
xRecyclerView.setLayoutManager(layoutManager);
}else
{
GridLayoutManager gridLayoutManager=new GridLayoutManager(this,2);
xRecyclerView.setLayoutManager(gridLayoutManager);
}
adapter=new MyBase(this,isLinear);
xRecyclerView.setAdapter(adapter);
isLinear=!isLinear;
page=1;
loda();
}
public void loda()
{
Map<String,String> map=new HashMap<>();
map.put("keywords","手机");
map.put("page",page+"");
iPresenterILP.getRequest("http://www.zhaoapi.cn/product/searchProducts",map,UserBean.class);
}
@Override
public void onClick(View v) {
switch (v.getId())
{
case R.id.qiehuan:
isLayoutManager();
break;
}
}
@Override
public void onsuccess(Object data) {
if(data instanceof UserBean)
{
UserBean userBean= (UserBean) data;
if(page==1)
{
adapter.setList(userBean.getData());
}else
{
adapter.addList(userBean.getData());
}
page++;
//停止
xRecyclerView.refreshComplete();
xRecyclerView.loadMoreComplete();
}
}
}
3.Adapter
package com.bw.ymy.products.adapter;
import android.content.Context;
import android.support.annotation.NonNull;
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.LinearLayout;
import android.widget.TextView;
import com.bumptech.glide.Glide;
import com.bw.ymy.products.R;
import com.bw.ymy.products.bean.UserBean;
import com.jcodecraeer.xrecyclerview.XRecyclerView;
import java.util.ArrayList;
import java.util.List;
public class MyBase extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private List<UserBean.DataBean> mdata;
private Context context;
private boolean isLinear;
public MyBase(Context context, boolean isLinear) {
this.context = context;
this.isLinear = isLinear;
mdata=new ArrayList<>();
}
//上拉
public void setList(List<UserBean.DataBean> datas)
{
mdata.clear();
mdata.addAll(datas);
notifyDataSetChanged();
}
//下拉
public void addList(List<UserBean.DataBean> datas)
{
mdata.addAll(datas);
notifyDataSetChanged();
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
XRecyclerView.ViewHolder viewHolder=null;
//判断是网格还是线性布局
if(isLinear)
{
View view=LayoutInflater.from(context).inflate(R.layout.item1,viewGroup,false);
viewHolder=new ViewHolder(view);
}else
{
View view=LayoutInflater.from(context).inflate(R.layout.item2,viewGroup,false);
viewHolder=new ViewHolder(view);
}
return viewHolder;
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int i) {
UserBean.DataBean bean=mdata.get(i);
ViewHolder viewHolder1= (ViewHolder) viewHolder;
//获取文字
viewHolder1.title.setText(bean.getTitle());
viewHolder1.price.setText(bean.getPrice()+"");
//照片
String images=mdata.get(i).getImages();
String[] split=images.split("\\|");
Glide.with(context).load(split[0]).into(viewHolder1.icon);
}
@Override
public int getItemCount() {
return mdata.size();
}
class ViewHolder extends RecyclerView.ViewHolder {
private ImageView icon;
private TextView title,price;
private LinearLayout linearLayout;
public ViewHolder(@NonNull View itemView) {
super(itemView);
icon=itemView.findViewById(R.id.icon);
title=itemView.findViewById(R.id.title);
price=itemView.findViewById(R.id.price);
linearLayout=itemView.findViewById(R.id.linear);
}
}
}