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
<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住
<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
<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>
分页部分
<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>
部分
<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);
}
}
}