1.主佈局
<?xml version="1.0" encoding="utf-8"?><android.support.v7.widget.RecyclerView
android:layout_width="100dp"
android:layout_height="match_parent"
android:id="@+id/left_recy"
/>
<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/right_recy"
/>
2.CallBack
package bw.com.yk;
import java.util.List;
import bw.com.yk.bean.LeftBean;
public interface CallBack {
void onSuccess(List<LeftBean.DataBean> list);
void onFailer(String error);
}
3.LeftView
package bw.com.yk.view;
import java.util.List;
import bw.com.yk.bean.LeftBean;
public interface LeftView {
void onSuccess(List<LeftBean.DataBean> list);
void onFailer(String error);
}
4.LeftModel
public class LeftModel {
private String path=“http://www.zhaoapi.cn/product/getCatagory”;
Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
}
};
public void show(final CallBack callBack){
OkHttp.createget(path, new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
final String string = response.body().string();
handler.post(new Runnable() {
@Override
public void run() {
Gson gson = new Gson();
LeftBean leftBean = gson.fromJson(string, LeftBean.class);
List<LeftBean.DataBean> data = leftBean.getData();
if (data!=null){
callBack.onSuccess(data);
}else {
callBack.onFailer("失敗 ");
}
}
});
}
});
}
}
5.LeftPresenter
public class LeftPresenter {
private LeftView leftView;
private LeftModel leftModel;
public LeftPresenter(LeftView leftView) {
this.leftView = leftView;
leftModel = new LeftModel();
}
public void showLeft(){
leftModel.show(new CallBack() {
@Override
public void onSuccess(List<LeftBean.DataBean> list) {
leftView.onSuccess(list);
}
@Override
public void onFailer(String error) {
leftView.onFailer(error);
}
});
}
}
5.1 LeftAdapter
public class LeftAdapter extends RecyclerView.Adapter {
private Context context;
private List<LeftBean.DataBean> list;
public LeftAdapter(Context context, List<LeftBean.DataBean> list) {
this.context = context;
this.list = list;
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view =null;
RecyclerView.ViewHolder viewHolder=null;
view = View.inflate(context,R.layout.left_item,null);
viewHolder = new LeftViewHolder(view);
return viewHolder;
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int i) {
((LeftViewHolder)viewHolder).textView.setText(list.get(i).getName());
}
@Override
public int getItemCount() {
return list.size();
}
private class LeftViewHolder extends RecyclerView.ViewHolder {
private final TextView textView;
public LeftViewHolder(@NonNull View itemView) {
super(itemView);
textView = itemView.findViewById(R.id.tv_name);
textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onClickListener.onCLick(v,getAdapterPosition());
}
});
}
}
public interface OnClickListener{
void onCLick(View view,int position);
}
OnClickListener onClickListener;
public void setOnClickListener(OnClickListener onClickListener) {
this.onClickListener = onClickListener;
}
}
6.Frag02
public class Frag02 extends Fragment implements LeftView,RightView {
private RightPresenter rightPresenter;
private LeftPresenter leftPresenter;
private View view;
private RecyclerView left;
private RecyclerView right;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
view = inflater.inflate(R.layout.fragment_frag02, container, false);
initView();
return view;
}
private void initView() {
leftPresenter = new LeftPresenter(this);
leftPresenter.showLeft();
left = view.findViewById(R.id.left_recy);
right = view.findViewById(R.id.right_recy);
rightPresenter = new RightPresenter(this);
}
@Override
public void onSuccess(final List<LeftBean.DataBean> list) {
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getActivity(),LinearLayoutManager.VERTICAL,false);
left.setLayoutManager(linearLayoutManager);
LeftAdapter leftAdapter = new LeftAdapter(getActivity(),list);
left.setAdapter(leftAdapter);
leftAdapter.setOnClickListener(new LeftAdapter.OnClickListener() {
@Override
public void onCLick(View view, int position) {
int cid = list.get(position).getCid();
rightPresenter.showright("http://www.zhaoapi.cn/product/getProductCatagory?cid="+cid);
}
});
}
@Override
public void onFailer(String error) {
}
@Override
public void onSuccess2(List<RightBean.DataBean> list) {
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getActivity(),LinearLayoutManager.VERTICAL,false);
right.setLayoutManager(linearLayoutManager);
RightAdapter rightAdapter = new RightAdapter(getActivity(),list);
right.setAdapter(rightAdapter);
}
@Override
public void onFailer2(String error) {
}
}
7.rightItem.xml
<android.support.v7.widget.RecyclerView
android:layout_width=“match_parent”
android:layout_height=“match_parent”
android:id="@+id/right_recy"
android:layout_below="@+id/name"
/>
8.child.xml
<?xml version="1.0" encoding="utf-8"?><ImageView
android:layout_width="90dp"
android:layout_height="90dp"
android:id="@+id/image2"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/title"
/>
9.RightView
public interface RightView {
void onSuccess2(List<RightBean.DataBean> list);
void onFailer2(String error);
}
10.RightModle
public class RightModel {
Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
}
};
public void showright(String cid2,final CallBackRight callBackRight){
OkHttp.createget(cid2, new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
final String string = response.body().string();
handler.post(new Runnable() {
@Override
public void run() {
Gson gson = new Gson();
RightBean rightBean = gson.fromJson(string, RightBean.class);
List<RightBean.DataBean> data = rightBean.getData();
if (data!=null){
callBackRight.onSuccess2(data);
}else {
callBackRight.onFailer2("失敗");
}
}
});
}
});
}
}
11.RightPresenter
public class RightPresenter {
private RightModel rightModel;
private RightView rightView;
public RightPresenter(RightView rightView) {
this.rightView = rightView;
rightModel = new RightModel();
}
public void showright(String id){
rightModel.showright(id, new CallBackRight() {
@Override
public void onSuccess2(List<RightBean.DataBean> list) {
rightView.onSuccess2(list);
}
@Override
public void onFailer2(String error) {
rightView.onFailer2(error);
}
});
}
}
12.RightAdapter
public class RightAdapter extends RecyclerView.Adapter {
private Context context;
private List<RightBean.DataBean> list;
public RightAdapter(Context context, List<RightBean.DataBean> list) {
this.context = context;
this.list = list;
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = null;
RecyclerView.ViewHolder viewHolder = null;
view=View.inflate(context,R.layout.rightitem,null);
viewHolder = new MyHolder1(view);
return viewHolder;
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int i) {
((MyHolder1)viewHolder).textView.setText(list.get(i).getName());
List<RightBean.DataBean.ListBean> list = this.list.get(i).getList();
GridLayoutManager gridLayoutManager = new GridLayoutManager(context,3);
((MyHolder1)viewHolder).recyclerView.setLayoutManager(gridLayoutManager);
ChildAdapter childAdapter = new ChildAdapter(context,list);
((MyHolder1)viewHolder).recyclerView.setAdapter(childAdapter);
}
@Override
public int getItemCount() {
return list.size();
}
private class MyHolder1 extends RecyclerView.ViewHolder {
private final TextView textView;
private final RecyclerView recyclerView;
public MyHolder1(@NonNull View itemView) {
super(itemView);
textView = itemView.findViewById(R.id.name);
recyclerView = itemView.findViewById(R.id.right_recy);
}
}
}
13.ChildAdapter
public class ChildAdapter extends RecyclerView.Adapter {
private Context context;
private List<RightBean.DataBean.ListBean> list;
public ChildAdapter(Context context, List<RightBean.DataBean.ListBean> list) {
this.context = context;
this.list = list;
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = null;
RecyclerView.ViewHolder viewHolder=null;
view=View.inflate(context,R.layout.child,null);
viewHolder= new MyHolder2(view);
return viewHolder;
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int i) {
((MyHolder2)viewHolder).textView.setText(list.get(i).getName());
Glide.with(context).load(list.get(i).getIcon()).into(((MyHolder2)viewHolder).imageView);
}
@Override
public int getItemCount() {
return list.size();
}
private class MyHolder2 extends RecyclerView.ViewHolder {
private final ImageView imageView;
private final TextView textView;
public MyHolder2(@NonNull View itemView) {
super(itemView);
imageView = itemView.findViewById(R.id.image2);
textView = itemView.findViewById(R.id.title);
}
}
}