ReceiverView嵌套ReceiverView
1.左边一个ReceiverView,右边一个ReceiverView
2.其中右边ReceiverView中 嵌套了一个ReceiverView
3.使用两个接口
okHttp依赖
implementation ‘com.squareup.okhttp:okhttp:2.0.0’
github
okHttp封装类
public class HttpOk {
public HttpOk(){}
public HttpOk get(String url){
OkHttpClient okHttpClient = new OkHttpClient();
Request build = new Request.Builder().url(url).build();
okHttpClient.newCall(build).enqueue(new Callback() {
@Override
public void onFailure(Request request, IOException e) {
}
@Override
public void onResponse(Response response) throws IOException {
String data = response.body().string();
Message message = new Message();
message.obj = data;
handler.sendMessage(message);
}
});
return this;
}
@SuppressLint("HandlerLeak")
private Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
String data = (String) msg.obj;
okHttpListener.success(data);
}
};
private OkHttpListener okHttpListener;
public void Result(OkHttpListener okHttpListener){
this.okHttpListener = okHttpListener;
}
//接口回调
public interface OkHttpListener{
void success(String data);
}
}
左边的ReceiverView适配器
public class LeftAdapter extends RecyclerView.Adapter<LeftAdapter.MyViewHolder> {
private Context context;
private List<LeftBean.DataBean> leftlist = new ArrayList<>();
public LeftAdapter(Context context) {
this.context = context;
}
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = View.inflate(context, R.layout.left_item, null);
MyViewHolder holder = new MyViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(@NonNull MyViewHolder holder, final int position) {
holder.mleftname.setText(leftlist.get(position).getName());
holder.mleftname.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
clickListener.onitemCilck(position);
}
});
}
@Override
public int getItemCount() {
return leftlist.size();
}
public void setLeftlist(List<LeftBean.DataBean> leftlist) {
this.leftlist = leftlist;
notifyDataSetChanged();
}
//自定义ViewHolder
public class MyViewHolder extends RecyclerView.ViewHolder {
TextView mleftname;
RelativeLayout mlayout;
public MyViewHolder(View itemView) {
super(itemView);
mleftname = itemView.findViewById(R.id.left_name);
mlayout = itemView.findViewById(R.id.layout);
}
}
//点击事件接口回调
private ClickListener clickListener;
public void setCilck(ClickListener clickListener){
this.clickListener = clickListener;
}
public interface ClickListener{
void onitemCilck(int position);
}
}
右边大的Receiver适配器
public class RightAdapter extends RecyclerView.Adapter<RightAdapter.MyViewHolder> {
private Context context;
private List<RightBean.DataBean> rightlist = new ArrayList<>();
public RightAdapter(Context context) {
this.context = context;
}
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = View.inflate(context, R.layout.right_item, null);
MyViewHolder holder = new MyViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
holder.mRightname.setText(rightlist.get(position).getName());
List<RightBean.DataBean.ListBean> list = rightlist.get(position).getList();
//获取子条目的Receiver适配器
RightChildAdapter childAdapter = new RightChildAdapter(context, list);
//布局管理器,网格布局
GridLayoutManager layoutManager = new GridLayoutManager(context, 3);
//设置布局,和适配器
holder.mRightre.setLayoutManager(layoutManager);
holder.mRightre.setAdapter(childAdapter);
}
@Override
public int getItemCount() {
return rightlist.size();
}
public void setRightlist(List<RightBean.DataBean> rightlist) {
this.rightlist = rightlist;
notifyDataSetChanged();
}
//自定义ViewHolder
public class MyViewHolder extends RecyclerView.ViewHolder {
TextView mRightname;
RecyclerView mRightre;
public MyViewHolder(View itemView) {
super(itemView);
mRightname = itemView.findViewById(R.id.right_name);
mRightre = itemView.findViewById(R.id.right_re);
}
}
}
右边子Receiver适配器
public class RightChildAdapter extends RecyclerView.Adapter<RightChildAdapter.MyViewHolder>{
private Context context;
private List<RightBean.DataBean.ListBean> list = new ArrayList<>();
public RightChildAdapter(Context context, List<RightBean.DataBean.ListBean> list) {
this.context = context;
this.list = list;
}
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = View.inflate(context, R.layout.right_child_item, null);
MyViewHolder holder = new MyViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
holder.mtxt.setText(list.get(position).getName());
Glide.with(context).load(list.get(position).getIcon()).into(holder.mpic);
}
@Override
public int getItemCount() {
return list.size();
}
public class MyViewHolder extends RecyclerView.ViewHolder {
ImageView mpic;
TextView mtxt;
public MyViewHolder(View itemView) {
super(itemView);
mpic = itemView.findViewById(R.id.ri_pic);
mtxt = itemView.findViewById(R.id.ri_txt);
}
}
}
Main方法
public class MainActivity extends AppCompatActivity {
private RecyclerView mLeftRe;
private RecyclerView mRightRe;
private LeftAdapter leftAdapter;
private List<LeftBean.DataBean> leftlist;
private RightAdapter rightAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
//获取左侧数据
doHttpLeft();
//右侧数据
doHttpRight(1);
//左边
leftAdapter = new LeftAdapter(this);
LinearLayoutManager manager = new LinearLayoutManager(this);
manager.setOrientation(LinearLayoutManager.VERTICAL);
mLeftRe.setLayoutManager(manager);
mLeftRe.setAdapter(leftAdapter);
//右侧
rightAdapter = new RightAdapter(this);
LinearLayoutManager manager1 = new LinearLayoutManager(this);
manager1.setOrientation(LinearLayoutManager.VERTICAL);
mRightRe.setLayoutManager(manager1);
mRightRe.setAdapter(rightAdapter);
//点击事件
leftAdapter.setCilck(new LeftAdapter.ClickListener() {
@Override
public void onitemCilck(int position) {
//传cid的值
int cid = leftlist.get(position).getCid();
for (int i = 0; i < leftlist.size(); i++) {
doHttpRight(cid);
}
leftAdapter.notifyDataSetChanged();
}
});
}
//右侧
private void doHttpRight(int cid) {
String url = "http://www.zhaoapi.cn/product/getProductCatagory?cid=" + cid;
new HttpOk().get(url).Result(new HttpOk.OkHttpListener() {
@Override
public void success(String data) {
RightBean rightBean = new Gson().fromJson(data, RightBean.class);
rightAdapter.setRightlist(rightBean.getData());
}
});
}
//左侧
private void doHttpLeft() {
String url = "http://www.zhaoapi.cn/product/getCatagory";
new HttpOk().get(url).Result(new HttpOk.OkHttpListener() {
@Override
public void success(String data) {
LeftBean bean = new Gson().fromJson(data, LeftBean.class);
leftlist = bean.getData();
leftAdapter.setLeftlist(leftlist);
}
});
}
private void initView() {
mLeftRe = findViewById(R.id.left_re);
mRightRe = findViewById(R.id.right_re);
}
}