**
**
**
**
第二个RecyclerView布局
**
**
**
**
private String url2 = "放请求的网址";
private RecyclerView recycler;
recycler = (RecyclerView) get(R.id.recycler);
//new 线性传上下文
LinearLayoutManager layoutManager = new LinearLayoutManager(context);
//给线性布局设置方法
layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
//记得把这个设置到recycler里
recycler.setLayoutManager(layoutManager);
//读取商品标题方法
dohttptitle();
private void dohttptitle() {
//new 工具类
new OkHttpUtil().get(url2).result(new OkHttpUtil.OkHttpListener() {
@Override
public void success(String s1) {
//new gson from 传字符串和bean类
RvBean rvBean = new Gson().fromJson(s1, RvBean.class);
//获取bean类的集合
final List dataBean = rvBean.getData();
//设置适配器
RvAdapter rvAdapter = new RvAdapter(context, dataBean);
//调用适配器 点击事件回调方法 new 括号
rvAdapter.setOnItemClickListener1(new RvAdapter.OnItemClickListener1() {
@Override
public void success(int index) {
//吐司显示
Toast.makeText(context, dataBean.get(index).getSellerName(), Toast.LENGTH_SHORT).show();
}
});
//给recycler设置适配器
recycler.setAdapter(rvAdapter);
}
});
}
**
**
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.StaggeredGridLayoutManager;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;
import java.util.List;
//继承recycler.适配器 泛型自己定义的内部类 先实现方法 强转
public class RvAdapter extends RecyclerView.Adapter {
//封装上下文和集合 构造方法
private Context context;
private List dataBean;
private OnItemClickListener1 onItemClickListener1;
public RvAdapter(Context context, List dataBean) {
this.context = context;
this.dataBean = dataBean;
}
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
//view inf 获取布局
View view = View.inflate(context, R.layout.rv_item, null);
//实例化内部类 传view
MyViewHolder myViewHolder=new MyViewHolder(view);
//内部类=view 获取控件
myViewHolder.t_title=view.findViewById(R.id.t_title);
//获取recycler控件
myViewHolder.recycler2=view.findViewById(R.id.recycler2);
//记得返回内部类
return myViewHolder;
}
@Override
public void onBindViewHolder(@NonNull MyViewHolder myViewHolder, final int i) {
//给内部类的控件赋值 集合位置 获取名称
myViewHolder.t_title.setText(dataBean.get(i).getSellerName());
//new 瀑布流 传列数和方向
StaggeredGridLayoutManager staggeredGridLayoutManager = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL);
//给内部类 recycler2 设置瀑布流
myViewHolder.recycler2.setLayoutManager(staggeredGridLayoutManager);
//设置适配器 集合是 集合里的集合
RvAdapter2 rvAdapter2=new RvAdapter2(context,dataBean.get(i).getList());
//给适配器调用回调方法点击事件 new括号
rvAdapter2.setOnItemClickListener2(new RvAdapter2.OnItemClickListener2() {
@Override
public void success(int index) {
//吐司显示
Toast.makeText(context,"哈哈哈"+index,Toast.LENGTH_SHORT).show();
}
});
//给内部类 recycler 设置适配器
myViewHolder.recycler2.setAdapter(rvAdapter2);
//内部类标题 点击事件
myViewHolder.t_title.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//调用回调方法 传i 索引
onItemClickListener1.success(i);
}
});
}
@Override
public int getItemCount() {
//返回集合大小
return dataBean.size();
}
//定义内部类 继承系统的内部类 实现类
class MyViewHolder extends RecyclerView.ViewHolder {
public MyViewHolder(@NonNull View itemView) {
super(itemView);
}
public TextView t_title;
//内部类的recycler
public RecyclerView recycler2;
}
//公共的设置回调接口方法 括号里实例化接口
public void setOnItemClickListener1(OnItemClickListener1 onItemClickListener1){
this.onItemClickListener1 = onItemClickListener1;
}
//公共的点击事件接口
public interface OnItemClickListener1{
//成功的方法传 int 的索引
void success(int index);
}
}
**
**
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.squareup.picasso.Picasso;
import java.util.List;
//继承 recycler .适配器 泛型内部类
public class RvAdapter2 extends RecyclerView.Adapter {
//封装上下文和集合里的集合 构造方法
private Context context;
private List listBean;
private OnItemClickListener2 onItemClickListener2;
public RvAdapter2(Context context, List listBean) {
this.context = context;
this.listBean = listBean;
}
@NonNull
@Override
public MyViewHolder2 onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
//view inf 获取布局
View view2 = View.inflate(context, R.layout.rv_item2, null);
//实例化内部类 传view2
MyViewHolder2 myViewHolder2=new MyViewHolder2(view2);
//内部类=view2 获取控件
myViewHolder2.t_img2=view2.findViewById(R.id.t_img2);
myViewHolder2.t_title2=view2.findViewById(R.id.t_title2);
myViewHolder2.t_desc2=view2.findViewById(R.id.t_desc2);
myViewHolder2.t_price2=view2.findViewById(R.id.t_price2);
myViewHolder2.item2=view2.findViewById(R.id.item2);
//记得返回内部类
return myViewHolder2;
}
@Override
public void onBindViewHolder(@NonNull MyViewHolder2 myViewHolder2, final int i) {
//给内部类 赋值集合位置
myViewHolder2.t_title2.setText(listBean.get(i).getTitle());
myViewHolder2.t_desc2.setText(listBean.get(i).getSubhead());
//记得double加个字符串¥:
myViewHolder2.t_price2.setText("价格¥:"+listBean.get(i).getPrice());
//picasso 赋值图片
Picasso.with(context).load(listBean.get(i).getImages()).into(myViewHolder2.t_img2);
//给内部类的条目点击事件
myViewHolder2.item2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//调用回调方法 传上面的i 索引
onItemClickListener2.success(i);
}
});
}
@Override
public int getItemCount() {
//先返回集合大小
return listBean.size();
}
//内部类 实现方法
class MyViewHolder2 extends RecyclerView.ViewHolder {
public MyViewHolder2(@NonNull View itemView) {
super(itemView);
}
public ImageView t_img2;
public TextView t_title2;
public TextView t_desc2;
public TextView t_price2;
public LinearLayout item2;
}
//公共的设置回调接口方法 括号里实例化接口
public void setOnItemClickListener2(OnItemClickListener2 onItemClickListener2){
this.onItemClickListener2 = onItemClickListener2;
}
//公共的点击事件接口
public interface OnItemClickListener2{
//成功的方法传 int 的索引
void success(int index);
}
}