package com.example.five_ds.frag;
import android.content.SharedPreferences;
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.GridLayoutManager;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.OrientationHelper;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.Toast;
import com.example.five_ds.R;
import com.example.five_ds.adapter.GrideAdapter;
import com.example.five_ds.bean.NewsBean;
import com.example.five_ds.core.DataCall;
import com.example.five_ds.model.ShowModel;
import com.example.five_ds.presenter.ShowPresenter;
import com.jcodecraeer.xrecyclerview.XRecyclerView;
import java.util.ArrayList;
import java.util.List;
public class Fragment01 extends Fragment implements View.OnClickListener, DataCall {
private RecyclerView rlv;
int page = 0;
ShowPresenter presenter = new ShowPresenter(this) {
@Override
public NewsBean useModel(int... sgrs) {
return ShowModel.getData(sgrs[0]);
}
};
private List<NewsBean.DataBean> list = new ArrayList<>();
private SharedPreferences com;
private GridLayoutManager gridLayoutManager;
private GrideAdapter adapter1;
private XRecyclerView xrlv;
private int type = 1;
private GrideAdapter adapter;
@Nullable
//控件 @Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
final View view = inflater.inflate(R.layout.fragment_01, container, false);
xrlv = view.findViewById(R.id.xrlv);
Button qiehuan = view.findViewById(R.id.qiehuan);
presenter.request(page);
//垂直效果
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getActivity());
linearLayoutManager.setOrientation(OrientationHelper.VERTICAL);
xrlv.setLayoutManager(linearLayoutManager);
//切换点击
qiehuan.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (type == 1) {
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getActivity());
linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
xrlv.setLayoutManager(linearLayoutManager);
adapter.notifyDataSetChanged();
type = 2;
} else {
GridLayoutManager gridLayoutManager = new GridLayoutManager(getActivity(), 2);
xrlv.setLayoutManager(gridLayoutManager);
adapter.notifyDataSetChanged();
type = 1;
}
}
});
return view;
}
// private SharedPreferences getSharedPreferences(String isTrue, int modePrivate) {
// return null;
// }
@Override
public void onClick(View v) {
}
@Override
public void loadSuccess(NewsBean data) {
Integer code = Integer.valueOf(data.getCode());
if (code == 0) {
List<NewsBean.DataBean> list1 = data.getData();
//设置适配器
adapter = new GrideAdapter(getActivity(), list1);
xrlv.setAdapter(adapter);
Toast.makeText(getActivity(), data.getMsg(), Toast.LENGTH_SHORT).show();
}
}
}
接口
public interface DataCall {
void loadSuccess(NewsBean data);
}
Model层
public class ShowModel {
public static NewsBean getData(int page) {
String data = HttpUtils.get("http://www.zhaoapi.cn/product/searchProducts?keywords=手机" + "&page=" + page);
Gson gson = new Gson();
NewsBean user = gson.fromJson(data, NewsBean.class);
return user;
}
}
工具类
public class HttpUtils {
public static String get(String urlString) {
OkHttpClient okHttpClient = new OkHttpClient();
Request request = new Request.Builder().url(urlString).get().build();
try {
Response response = okHttpClient.newCall(request).execute();
return response.body().string();
} catch (IOException e) {
e.printStackTrace();
}
return "";
}
}
Linear适配器
package com.example.five_ds.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.TextView;
import com.bumptech.glide.Glide;
import com.example.five_ds.R;
import com.example.five_ds.bean.NewsBean;
import java.util.ArrayList;
import java.util.List;
public class LinearAdapter extends RecyclerView.Adapter<LinearAdapter.VH> {
private Context context;
private List<NewsBean.DataBean> list;
private TextView textView;
private ImageView imageView;
public LinearAdapter(List<NewsBean.DataBean> list, Context context) {
this.context = context;
this.list = list;
}
public LinearAdapter() {
this.list = new ArrayList<>();
}
public void addItem(NewsBean.DataBean user) {
if (user != null) {
list.add(user);
}
}
@NonNull
@Override
public LinearAdapter.VH onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.frag_item11, null);
return new VH(view);
}
@Override
public void onBindViewHolder(@NonNull LinearAdapter.VH vh, int i) {
NewsBean.DataBean bean = list.get(i);
textView.setText(bean.getTitle());
String images = list.get(i).getImages();//得到图片集
String[] split = images.split("\\|");//得到一个图片
if (split.length > 0) {
//将https成http 进行联网显示
String replace = split[0].replace("https", "http");
Glide.with(context).load(replace).into((ImageView) vh.imageView);//设置图片
}
}
@Override
public int getItemCount() {
return list.size();
}
public static class VH extends RecyclerView.ViewHolder {
private final ImageView imageView;
private final TextView textView;
public VH(@NonNull View itemView) {
super(itemView);
imageView = itemView.findViewById(R.id.image2);
textView = itemView.findViewById(R.id.textView02);
}
}
}
P层
public class ShowPresenter {
private DataCall dataCall;
public ShowPresenter(DataCall dataCall) {
this.dataCall = dataCall;
}
public void unBind() {
dataCall = null;
}
private Handler mhandler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
dataCall.loadSuccess((NewsBean) msg.obj);
}
};
public void request(final int page) {
new Thread(new Runnable() {
@Override
public void run() {
NewsBean user = useModel(page);
Message message = mhandler.obtainMessage();
message.obj = user;
mhandler.sendMessage(message);
}
}).start();
}
public NewsBean useModel(int... page) {
return null;
}
}