第三方

QQ友盟登入
1.拷贝demo中的libs文件夹和res文件夹;
右击 add as library
2.Application添加如下代码:
UMConfigure.init(this,“5c089159b465f59767000066”,“小米”,UMConfigure.DEVICE_TYPE_PHONE,"");
/**

  • 设置组件化的Log开关
  • 参数: boolean 默认为false,如需查看LOG设置为true
    */
    UMConfigure.setLogEnabled(true);
    PlatformConfig.setQQZone(“100424468”, “c7394704798a158208a74ab60104f0ba”);
    3.AndroidManifest.xml清单文件里面增加:
    <application
    android:name=“com.dingtao.logindemo.core.DTApplication”

---------------------------
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />

    <data android:scheme="tencent100424468" />
</intent-filter>
----------------------- 4.activity中先申请权限,然后重写onActivtyResult和onRequestPermissionsResult ----------------------- if(Build.VERSION.SDK_INT>=23){//QQ需要申请写入权限 String[] mPermissionList = new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.ACCESS_FINE_LOCATION,Manifest.permission.CALL_PHONE,Manifest.permission.READ_LOGS,Manifest.permission.READ_PHONE_STATE, Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.SET_DEBUG_APP,Manifest.permission.SYSTEM_ALERT_WINDOW,Manifest.permission.GET_ACCOUNTS,Manifest.permission.WRITE_APN_SETTINGS}; ActivityCompat.requestPermissions(this,mPermissionList,123); } ------------------------------------ @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); if (requestCode==123){ UMShareAPI.get(this).getPlatformInfo(this, SHARE_MEDIA.QQ, authListener); } } ------------------------------------- @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data); } -------------------------------------- UMAuthListener authListener = new UMAuthListener() { /** * @desc 授权开始的回调 * @param platform 平台名称 */ @Override public void onStart(SHARE_MEDIA platform) {
    }

    /**
     * @desc 授权成功的回调
     * @param platform 平台名称
     * @param action 行为序号,开发者用不上
     * @param data 用户资料返回
     */
    @Override
    public void onComplete(SHARE_MEDIA platform, int action, Map<String, String> data) {

        Toast.makeText(LoginActivity.this, "成功了", Toast.LENGTH_LONG).show();
        Intent intent = new Intent(LoginActivity.this,ShopListActivity.class);
        startActivity(intent);
        finish();
    }

    /**
     * @desc 授权失败的回调
     * @param platform 平台名称
     * @param action 行为序号,开发者用不上
     * @param t 错误原因
     */
    @Override
    public void onError(SHARE_MEDIA platform, int action, Throwable t) {

        Toast.makeText(LoginActivity.this, "失败:" + t.getMessage(),                                  Toast.LENGTH_LONG).show();
    }

    /**
     * @desc 授权取消的回调
     * @param platform 平台名称
     * @param action 行为序号,开发者用不上
     */
    @Override
    public void onCancel(SHARE_MEDIA platform, int action) {
        Toast.makeText(LoginActivity.this, "取消了", Toast.LENGTH_LONG).show();
    }
};

api接口
package com.example.lianxizhos.api;

public class UserApi {
public static final String USER_LOGIN=“http://120.27.23.105/user/login”;
public static final String USER_REG=“http://120.27.23.105/user/reg”;
public static final String USER_HOME=“http://120.27.23.105/home/getHome”;
}
Login解析
package com.example.lianxizhos.entity;

public class Login {

/**
 * msg : 登录成功
 * code : 0
 * data : {"age":null,"appkey":"feca719f04ae6ec3","appsecret":"9D6CEA436D96200C7E1ED5E7479B4233","createtime":"2019-01-12T17:30:05","email":null,"fans":null,"follow":null,"gender":null,"icon":null,"latitude":null,"longitude":null,"mobile":"15266882258","money":null,"nickname":null,"password":"8F669074CAF5513351A2DE5CC22AC04C","praiseNum":null,"token":"443100977A82F8AC62FD1AF218D4CF82","uid":26122,"userId":null,"username":"15266882258"}
 */

private String msg;
private String code;
private DataBean data;

public String getMsg() {
    return msg;
}

public void setMsg(String msg) {
    this.msg = msg;
}

public String getCode() {
    return code;
}

public void setCode(String code) {
    this.code = code;
}

public DataBean getData() {
    return data;
}

public void setData(DataBean data) {
    this.data = data;
}

public static class DataBean {
    /**
     * age : null
     * appkey : feca719f04ae6ec3
     * appsecret : 9D6CEA436D96200C7E1ED5E7479B4233
     * createtime : 2019-01-12T17:30:05
     * email : null
     * fans : null
     * follow : null
     * gender : null
     * icon : null
     * latitude : null
     * longitude : null
     * mobile : 15266882258
     * money : null
     * nickname : null
     * password : 8F669074CAF5513351A2DE5CC22AC04C
     * praiseNum : null
     * token : 443100977A82F8AC62FD1AF218D4CF82
     * uid : 26122
     * userId : null
     * username : 15266882258
     */

    private Object age;
    private String appkey;
    private String appsecret;
    private String createtime;
    private Object email;
    private Object fans;
    private Object follow;
    private Object gender;
    private Object icon;
    private Object latitude;
    private Object longitude;
    private String mobile;
    private Object money;
    private Object nickname;
    private String password;
    private Object praiseNum;
    private String token;
    private int uid;
    private Object userId;
    private String username;

    public Object getAge() {
        return age;
    }

    public void setAge(Object age) {
        this.age = age;
    }

    public String getAppkey() {
        return appkey;
    }

    public void setAppkey(String appkey) {
        this.appkey = appkey;
    }

    public String getAppsecret() {
        return appsecret;
    }

    public void setAppsecret(String appsecret) {
        this.appsecret = appsecret;
    }

    public String getCreatetime() {
        return createtime;
    }

    public void setCreatetime(String createtime) {
        this.createtime = createtime;
    }

    public Object getEmail() {
        return email;
    }

    public void setEmail(Object email) {
        this.email = email;
    }

    public Object getFans() {
        return fans;
    }

    public void setFans(Object fans) {
        this.fans = fans;
    }

    public Object getFollow() {
        return follow;
    }

    public void setFollow(Object follow) {
        this.follow = follow;
    }

    public Object getGender() {
        return gender;
    }

    public void setGender(Object gender) {
        this.gender = gender;
    }

    public Object getIcon() {
        return icon;
    }

    public void setIcon(Object icon) {
        this.icon = icon;
    }

    public Object getLatitude() {
        return latitude;
    }

    public void setLatitude(Object latitude) {
        this.latitude = latitude;
    }

    public Object getLongitude() {
        return longitude;
    }

    public void setLongitude(Object longitude) {
        this.longitude = longitude;
    }

    public String getMobile() {
        return mobile;
    }

    public void setMobile(String mobile) {
        this.mobile = mobile;
    }

    public Object getMoney() {
        return money;
    }

    public void setMoney(Object money) {
        this.money = money;
    }

    public Object getNickname() {
        return nickname;
    }

    public void setNickname(Object nickname) {
        this.nickname = nickname;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public Object getPraiseNum() {
        return praiseNum;
    }

    public void setPraiseNum(Object praiseNum) {
        this.praiseNum = praiseNum;
    }

    public String getToken() {
        return token;
    }

    public void setToken(String token) {
        this.token = token;
    }

    public int getUid() {
        return uid;
    }

    public void setUid(int uid) {
        this.uid = uid;
    }

    public Object getUserId() {
        return userId;
    }

    public void setUserId(Object userId) {
        this.userId = userId;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }
}

}
Reg解析
package com.example.lianxizhos.entity;

public class Reg {
private String msg;
private String code;

public String getMsg() {
    return msg;
}

public void setMsg(String msg) {
    this.msg = msg;
}

public String getCode() {
    return code;
}

public void setCode(String code) {
    this.code = code;
}

}
RequestCallback
package com.example.lianxizhos.net;

public interface RequestCallbask {
void onFailUre(String msg);
void onSuccess(String result);
}
OKHTTPCallback
package com.example.lianxizhos.net;

public interface OkhttpCallback {
void onFailUre(String msg);
void onSuccess(String result);
}
Login契约类
package com.example.lianxizhos.contract;

import com.example.lianxizhos.net.RequestCallbask;

import java.util.HashMap;

public interface LoginContract {
public abstract class LoginPreserve{
public abstract void login(HashMap<String,String>params);
}
interface LoginModel{
void login(HashMap<String,String>params,RequestCallbask callbask);
}
interface LoginView{
void onFailUre(String msg);
void onMobile(String error);
void onPassword(String error);
void onSuccess(String result);
}
}
home契约类
package com.example.lianxizhos.contract;

import com.example.lianxizhos.net.RequestCallbask;

public interface HomeContract {
public abstract class HomePreserve{
public abstract void home();
}
interface HomeModel{
void home(RequestCallbask callbask);
}
interface HomeView{
void onFailUre(String msg);
void onSuccess(String result);
}
}

封装OKHTTP
package com.example.lianxizhos.net;

import android.os.Handler;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;

import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.FormBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import okhttp3.logging.HttpLoggingInterceptor;

public class OkHttpUtiley {
private Handler handler=new Handler();
private OkHttpClient okHttpClient;
private static OkHttpUtiley mInserhew;
public OkHttpUtiley(){
HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor();
loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
okHttpClient=new OkHttpClient.Builder()
.addInterceptor(loggingInterceptor)
.writeTimeout(5,TimeUnit.SECONDS)
.readTimeout(5,TimeUnit.SECONDS)
.connectTimeout(5,TimeUnit.SECONDS)
.build();
}
public void doPost(String apiUer, HashMap<String,String>params, final OkhttpCallback okhttpCallback){
FormBody.Builder formBody = new FormBody.Builder();
if (params!=null){
for (Map.Entry<String,String>p:params.entrySet()){
formBody.add(p.getKey(),p.getValue());
}
}
Request request = new Request.Builder().url(apiUer).post(formBody.build()).build();
okHttpClient.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
if (okhttpCallback!=null){
handler.post(new Runnable() {
@Override
public void run() {
okhttpCallback.onFailUre(“网络异常”);
}
});
}
}

        @Override
        public void onResponse(Call call, Response response) throws IOException {
            final String result = response.body().string();
            int code = response.code();
            if (200==code){
                if (okhttpCallback!=null){
                    handler.post(new Runnable() {
                        @Override
                        public void run() {
                            okhttpCallback.onSuccess(result);
                        }
                    });
                }
            }
        }
    });
}
public static OkHttpUtiley getmInserhew(){
    if (mInserhew==null){
        synchronized (OkHttpUtiley.class){
            if (mInserhew==null){
                mInserhew=new OkHttpUtiley();
            }
        }
    }
    return mInserhew;
}

}
loginModel
package com.example.lianxizhos.model;

import android.os.Handler;

import com.example.lianxizhos.api.UserApi;
import com.example.lianxizhos.contract.LoginContract;
import com.example.lianxizhos.net.OkHttpUtiley;
import com.example.lianxizhos.net.OkhttpCallback;
import com.example.lianxizhos.net.RequestCallbask;

import java.util.HashMap;

public class LoginModel implements LoginContract.LoginModel {
private Handler handler=new Handler();

@Override
public void login(HashMap<String, String> params, final RequestCallbask callbask) {
    OkHttpUtiley.getmInserhew().doPost(UserApi.USER_LOGIN, params, new OkhttpCallback() {
        @Override
        public void onFailUre(String msg) {
            if (callbask!=null){
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        callbask.onFailUre("网络异常");
                    }
                });
            }
        }

        @Override
        public void onSuccess(final String result) {
            if (callbask!=null){
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        callbask.onSuccess(result);
                    }
                });
            }
        }
    });
}

}
HomeModel
package com.example.lianxizhos.model;

import android.os.Handler;
import android.text.TextUtils;

import com.example.lianxizhos.api.UserApi;
import com.example.lianxizhos.contract.HomeContract;
import com.example.lianxizhos.net.OkHttpUtiley;
import com.example.lianxizhos.net.OkhttpCallback;
import com.example.lianxizhos.net.RequestCallbask;

public class HomeModel implements HomeContract.HomeModel {
private Handler handler=new Handler();
@Override
public void home(final RequestCallbask callbask) {
OkHttpUtiley.getmInserhew().doPost(UserApi.USER_HOME, null, new OkhttpCallback() {
@Override
public void onFailUre(String msg) {
if (callbask!=null){
callbask.onFailUre(“网络异常”);
}
}

        @Override
        public void onSuccess(String result) {
            if (!TextUtils.isEmpty(result)){
                callbask.onSuccess(result);
            }
        }
    });
}

}
LoginPreserve
package com.example.lianxizhos.preserve;

import com.example.lianxizhos.activity.MainActivity;
import com.example.lianxizhos.contract.LoginContract;
import com.example.lianxizhos.model.LoginModel;
import com.example.lianxizhos.net.RequestCallbask;

import java.util.HashMap;

public class LoginPreserve extends LoginContract.LoginPreserve {
private LoginModel loginModel;
private LoginContract.LoginView loginView;

public LoginPreserve( LoginContract.LoginView loginView) {
    this.loginModel = new LoginModel();
    this.loginView = loginView;
}


@Override
public void login(HashMap<String, String> params) {
    String phone = params.get("mobile");
    if (!ValidatorUtil.isMobile(phone)){
        if (loginView!=null){
            loginView.onMobile("请输入正确的手机号");
        }
        return;
    }
    if (loginModel!=null){
        loginModel.login(params, new RequestCallbask() {
            @Override
            public void onFailUre(String msg) {
                if (loginView!=null){
                    loginView.onFailUre(msg);
                }
            }

            @Override
            public void onSuccess(String result) {
                if (loginView!=null){
                    loginView.onSuccess(result);
                }
            }
        });
    }
}

}
HomePreserve
package com.example.lianxizhos.preserve;

import com.example.lianxizhos.contract.HomeContract;
import com.example.lianxizhos.model.HomeModel;
import com.example.lianxizhos.net.RequestCallbask;

public class HomePreserve extends HomeContract.HomePreserve {
private HomeModel homeModel;
private HomeContract.HomeView homeView;

public HomePreserve( HomeContract.HomeView homeView) {
    this.homeModel = new HomeModel();
    this.homeView = homeView;
}

@Override
public void home() {
    if (homeModel!=null){
        homeModel.home(new RequestCallbask() {
            @Override
            public void onFailUre(String msg) {
                if (homeView!=null){
                    homeView.onFailUre(msg);
                }
            }

            @Override
            public void onSuccess(String result) {
                if (homeView!=null){
                    homeView.onSuccess(result);
                }
            }
        });
    }
}
public void destrioy(){
    if (homeView!=null){
        homeView=null;
    }
}

}
LofinActivity
package com.example.lianxizhos.activity;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import com.example.lianxizhos.R;
import com.example.lianxizhos.contract.LoginContract;
import com.example.lianxizhos.entity.Login;
import com.example.lianxizhos.preserve.LoginPreserve;
import com.google.gson.Gson;

import java.util.HashMap;

public class MainActivity extends AppCompatActivity implements LoginContract.LoginView {

private EditText phone;
private EditText pwd;
private TextView dsf;
private Button login;
private Button reg;
private LoginPreserve loginPreserve;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    initView();
    loginPreserve = new LoginPreserve(this);
    login.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String ph = phone.getText().toString();
            String pwdss = pwd.getText().toString();
            if (ph.equals("")){
                Toast.makeText(MainActivity.this,"手机号不能为空",Toast.LENGTH_SHORT).show();
            }else {
                HashMap<String,String>params=new HashMap<>();
                params.put("mobile",ph);
                params.put("password",pwdss);
                loginPreserve.login(params);
            }
        }
    });
    reg.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            startActivity(new Intent(MainActivity.this,RegActivity.class));
        }
    });
}

private void initView() {
    phone = (EditText) findViewById(R.id.phone);
    pwd = (EditText) findViewById(R.id.pwd);
    dsf = (TextView) findViewById(R.id.dsf);
    login = (Button) findViewById(R.id.login);
    reg = (Button) findViewById(R.id.reg);

}

@Override
public void onFailUre(String msg) {
    Toast.makeText(MainActivity.this,msg,Toast.LENGTH_SHORT).show();
}

@Override
public void onMobile(String error) {
    Toast.makeText(MainActivity.this,error,Toast.LENGTH_SHORT).show();
}

@Override
public void onPassword(String error) {
    Toast.makeText(MainActivity.this,error,Toast.LENGTH_SHORT).show();
}

@Override
public void onSuccess(String result) {
    Login login = new Gson().fromJson(result, Login.class);
    Toast.makeText(MainActivity.this,login.getMsg(),Toast.LENGTH_SHORT).show();
    if (login.getMsg().equals("登录成功")){
        startActivity(new Intent(MainActivity.this,HomeActivity.class));
    }
}

}
BaseFragment
package com.example.lianxizhos.fragment;

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;

public abstract class BaseFragment extends Fragment {
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(getLayout(),container,false);
}

@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    initView(view);
}

protected abstract void initView(View view);

protected abstract int getLayout();

protected abstract void initData();

}
loginXML

<?xml version="1.0" encoding="utf-8"?>

<android.support.constraint.ConstraintLayout 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.LoginActivity">

<EditText
    android:id="@+id/phone"
    android:hint="请输入手机号"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginLeft="50dp"
    android:layout_marginRight="50dp"
    android:layout_marginTop="100dp"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toTopOf="parent" />
<EditText
    android:id="@+id/pwd"
    android:hint="请输入密码"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginLeft="50dp"
    android:layout_marginRight="50dp"
    android:layout_marginTop="50dp"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toBottomOf="@id/phone" />
<LinearLayout
    android:id="@+id/linear"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:layout_constraintTop_toBottomOf="@id/pwd"
    android:orientation="horizontal"
    android:layout_marginLeft="50dp"
    android:layout_marginRight="50dp"
    android:layout_marginTop="50dp"
    >
    <Button
        android:id="@+id/login"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="wrap_content"
        android:text="登录"
        />
    <Button
        android:id="@+id/register"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="wrap_content"
        android:text="注册"

        />
</LinearLayout>
<Button
    android:id="@+id/qq"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:layout_constraintTop_toBottomOf="@id/linear"
    android:layout_marginLeft="50dp"
    android:layout_marginRight="50dp"
    android:text="使用QQ进行登录"
    />

</android.support.constraint.ConstraintLayout>
fragment住

<?xml version="1.0" encoding="utf-8"?>





<com.jcodecraeer.xrecyclerview.XRecyclerView
    android:id="@+id/xrec"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="9"></com.jcodecraeer.xrecyclerview.XRecyclerView>
been轮播 <?xml version="1.0" encoding="utf-8"?>

</android.support.constraint.ConstraintLayout>
分页XML

<?xml version="1.0" encoding="utf-8"?>

<android.support.constraint.ConstraintLayout
xmlns:android=“http://schemas.android.com/apk/res/android” android:layout_width=“match_parent”
android:layout_height=“200dp”>

<android.support.v7.widget.RecyclerView
    android:id="@+id/rec"
    android:layout_width="match_parent"
    android:layout_height="match_parent"></android.support.v7.widget.RecyclerView>

</android.support.constraint.ConstraintLayout>
分页部分

<?xml version="1.0" encoding="utf-8"?>



第三块 <?xml version="1.0" encoding="utf-8"?> 第三块部分 <?xml version="1.0" encoding="utf-8"?>
<ImageView
    android:id="@+id/image"
    android:layout_width="60dp"
    android:layout_height="60dp" />
<TextView
    android:id="@+id/price"
    android:textColor="#f00"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textSize="15sp"
    />
<TextView
    android:id="@+id/pricee"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="¥5399"
    />
第四块 <?xml version="1.0" encoding="utf-8"?>

</android.support.constraint.ConstraintLayout>
部分

<?xml version="1.0" encoding="utf-8"?>

<ImageView
    android:id="@+id/image"
    android:layout_width="match_parent"
    android:layout_height="100dp" />
<TextView
    android:id="@+id/title"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:ellipsize="end"
    android:lines="1"/>
<TextView
    android:id="@+id/price"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />
forfeit欧恩 package com.example.sanmo.fragment;

import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v7.widget.LinearLayoutManager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.Toast;

import com.example.sanmo.R;
import com.example.sanmo.activity.ErweimaActivity;
import com.example.sanmo.adapter.Fragment_home_Adapter;
import com.example.sanmo.contract.ProductContract;
import com.example.sanmo.entity.Product;
import com.example.sanmo.presenter.ProductPresenter;
import com.google.gson.Gson;
import com.jcodecraeer.xrecyclerview.XRecyclerView;

public class Fragment_home extends Fragment implements ProductContract.IProductView {

private XRecyclerView xrec;
private Fragment_home_Adapter myAdapter;
private Button btn_sao;

@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    return inflater.inflate(R.layout.fragment_home,container,false);
}

@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    xrec = view.findViewById(R.id.xrec);
    btn_sao = view.findViewById(R.id.btn_sao);
    xrec.setLayoutManager(new LinearLayoutManager(getActivity()));
    ProductPresenter presenter = new ProductPresenter(this);
    presenter.product();
    myAdapter = new Fragment_home_Adapter(getActivity());
    xrec.setAdapter(myAdapter);
    xrec.refreshComplete();
    xrec.loadMoreComplete();
    btn_sao.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            startActivity(new Intent(getActivity(),ErweimaActivity.class));
        }
    });
}

@Override
public void onFailUre(String msg) {
    Toast.makeText(getActivity(),msg,Toast.LENGTH_SHORT).show();
}

@Override
public void onSuccess(String result) {
    Product product = new Gson().fromJson(result, Product.class);
    myAdapter.setData(product.getData());
}

}

package com.example.sanmo.adapter;

import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.GridLayoutManager;
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.example.sanmo.R;
import com.example.sanmo.entity.Product;
import com.jcodecraeer.xrecyclerview.XRecyclerView;
import com.recker.flybanner.FlyBanner;

import java.util.ArrayList;

public class Fragment_home_Adapter extends XRecyclerView.Adapter<XRecyclerView.ViewHolder> {
private Context context;
private Product.Data data;
public static final int BANNER=0;
public static final int FENLEI=1;
public static final int MIAOSHA=2;
public static final int TUIJIAN=3;

public Fragment_home_Adapter(Context context) {
    this.context = context;
    this.data=new Product.Data();
}

public void setData(Product.Data data) {
    if (data!=null) {
        this.data = data;
    }
    notifyDataSetChanged();
}

@Override
public int getItemViewType(int position) {
    if (position==0){
        return BANNER;
    }else if (position==1){
        return FENLEI;
    }else if (position==2){
        return MIAOSHA;
    }else{
        return TUIJIAN;
    }
}

@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
    if (getItemViewType(i)==BANNER){
        View view = LayoutInflater.from(context).inflate(R.layout.fragment_home_banner, viewGroup, false);
        ViewHolder_one viewHolder_one=new ViewHolder_one(view);
        return viewHolder_one;
    }else if(getItemViewType(i)==FENLEI){
        View view = LayoutInflater.from(context).inflate(R.layout.fragment_home_fenlei, viewGroup, false);
        ViewHolder_two viewHolder_two=new ViewHolder_two(view);
        return viewHolder_two;
    }else if(getItemViewType(i)==MIAOSHA){
        View view = LayoutInflater.from(context).inflate(R.layout.fragment_home_miaosha, viewGroup, false);
        ViewHolder_three viewHolder_three=new ViewHolder_three(view);
        return viewHolder_three;
    }else{
        View view = LayoutInflater.from(context).inflate(R.layout.fragment_home_tuijian, viewGroup, false);
        ViewHolder_four viewHolder_four=new ViewHolder_four(view);
        return viewHolder_four;
    }
}

@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int i) {
    if (data.getBanner()!=null && data.getFenlei()!=null && data.getMiaosha()!=null && data.getTuijian()!=null){
        if (viewHolder instanceof ViewHolder_one){
            ArrayList<String> list = new ArrayList<>();
            for (int j=0;j<data.getBanner().size();j++){
                list.add(data.getBanner().get(j).getIcon());
            }
            ((ViewHolder_one)viewHolder).banner.setImagesUrl(list);
        }else if (viewHolder instanceof ViewHolder_two){
            ((ViewHolder_two)viewHolder).rec.setLayoutManager(new GridLayoutManager(context,2,GridLayoutManager.HORIZONTAL,false));
            ((ViewHolder_two)viewHolder).rec.setAdapter(new Fragment_home_fenlei_Adapter(context,data.getFenlei()));
        }else if(viewHolder instanceof ViewHolder_three){
            ((ViewHolder_three)viewHolder).title.setText(data.getMiaosha().getName());
            ((ViewHolder_three)viewHolder).rec.setLayoutManager(new LinearLayoutManager(context,LinearLayoutManager.HORIZONTAL,false));
            ((ViewHolder_three)viewHolder).rec.setAdapter(new Fragment_home_miaosha_Adapter(context,data.getMiaosha().getList()));
        }else{
            ((ViewHolder_four)viewHolder).rec.setLayoutManager(new LinearLayoutManager(context,LinearLayoutManager.HORIZONTAL,false));
            ((ViewHolder_four)viewHolder).rec.setAdapter(new Fragment_home_tuijian_Adapter(context,data.getTuijian().getList()));
        }
    }
}

@Override
public int getItemCount() {
    return 4;
}
class ViewHolder_one extends XRecyclerView.ViewHolder {
    private final FlyBanner banner;
    public ViewHolder_one(@NonNull View itemView) {
        super(itemView);
        banner = itemView.findViewById(R.id.banner);
    }
}
class ViewHolder_two extends XRecyclerView.ViewHolder {
    private final RecyclerView rec;
    public ViewHolder_two(@NonNull View itemView) {
        super(itemView);
        rec = itemView.findViewById(R.id.rec);
    }
}
class ViewHolder_three extends XRecyclerView.ViewHolder {
    private final TextView title;
    private final RecyclerView rec;
    public ViewHolder_three(@NonNull View itemView) {
        super(itemView);
        title = itemView.findViewById(R.id.title);
        rec = itemView.findViewById(R.id.rec);
    }
}
class ViewHolder_four extends XRecyclerView.ViewHolder {
    private final RecyclerView rec;
    public ViewHolder_four(@NonNull View itemView) {
        super(itemView);
        rec = itemView.findViewById(R.id.rec);
    }
}

}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值