万能适配器四大步骤:初始化控件,准备数据源,定义适配器,设置适配器
适配器
多布局:
private RecyclerView recyclerView; MyAbsert2 myAbsert2; private List<Base.DataBean>list= new ArrayList<>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); //初始化控件 recyclerView=findViewById(R.id.rv2); //准备数据源 OkGo.<String>get("http://43.143.146.165:7777/foods/getFoods?pageSize=10¤tPage=1").execute(new StringCallback() { @Override public void onSuccess(Response<String> response) { String s = response.body().toString(); Base base = new Gson().fromJson(s, Base.class); List<Base.DataBean> data = base.getData(); list.addAll(data); for (int i = 0; i < list.size(); i++) { int type=(i%2==0)?0:1; list.get(i).setType(type); } myAbsert2.notifyDataSetChanged(); } }); //定义适配器 myAbsert2=new MyAbsert2(list,this); //设置适配器 recyclerView.setAdapter(myAbsert2); recyclerView.setLayoutManager(new LinearLayoutManager(this)); }
多布局适配器:
布局联动
private RecyclerView rv3;
private MyAbsert3 myAbsert3;
private MyAbsert4 myAbsert4;
private List<Base3.DataBean.DataBean1> list = new ArrayList<>();
private RecyclerView rv4;
private List<Base4.DataBean> list4=new ArrayList<>();
private int id=14;
private int page=1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main3);
initView();
OkGo.<String>get("http://43.143.146.165:7777/goods/category").execute(new StringCallback() {
@Override
public void onSuccess(Response<String> response) {
String s = response.body().toString();
Base3 base3 = new Gson().fromJson(s, Base3.class);
List<Base3.DataBean> data = base3.getData();
for (int i = 0; i < data.size(); i++) {
List<Base3.DataBean.DataBean1> data1 = data.get(i).getData();
list.addAll(data1);
}
myAbsert3.notifyDataSetChanged();
}
});
myAbsert3 = new MyAbsert3(R.layout.c, list, this);
rv3.setAdapter(myAbsert3);
rv3.setLayoutManager(new StaggeredGridLayoutManager(1, StaggeredGridLayoutManager.HORIZONTAL));
inint();
myAbsert3.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(@NonNull BaseQuickAdapter<?, ?> adapter, @NonNull View view, int position) {
id=list.get(position).getId();
page=1;
list4.clear();
inint();
}
});
}
private void inint() {
OkGo.<String>get("http://43.143.146.165:7777/goods/info?category_id="+id+"¤tPage="+page+"&pageSize=10").execute(new StringCallback() {
@Override
public void onSuccess(Response<String> response) {
String s = response.body().toString();
Gson gson = new Gson();
Base4 base4 = gson.fromJson(s, Base4.class);
List<Base4.DataBean> data = base4.getData();
list4.addAll(data);
myAbsert4.notifyDataSetChanged();
}
});
myAbsert4=new MyAbsert4(R.layout.d,list4,this);
rv4.setAdapter(myAbsert4);
rv4.setLayoutManager(new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL));
}
private void initView() {
rv3 = (RecyclerView) findViewById(R.id.rv3);
rv4 = (RecyclerView) findViewById(R.id.rv4);
}
各种小功能
private RecyclerView rv1;
private List<Base.DataBean>list=new ArrayList<>();
int path=0;
Banner banner;
MyAbsert1 myAbsert1;
@SuppressLint("MissingInflatedId")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
banner=findViewById(R.id.ba);
OkGo.<String>get("http://43.143.146.165:7777/foods/getFoods?pageSize=10¤tPage=1").execute(new StringCallback() {
@Override
public void onSuccess(Response<String> response) {
String s = response.body().toString();
Base base = new Gson().fromJson(s, Base.class);
List<Base.DataBean> data = base.getData();
if (data.size()==0||data==null){
Toast.makeText(MainActivity.this, "没有更多了", Toast.LENGTH_SHORT).show();
}else {
list.addAll(data);
myAbsert1.notifyDataSetChanged();
}
}
});
//定义适配器
myAbsert1 = new MyAbsert1(R.layout.aaa, list, this);
//
rv1.setAdapter(myAbsert1);
rv1.setLayoutManager(new LinearLayoutManager(this));
//设置分割线
DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(this, DividerItemDecoration.VERTICAL);
dividerItemDecoration.setDrawable(getResources().getDrawable(R.drawable.sp));
rv1.addItemDecoration(dividerItemDecoration);
//设置动画
DefaultItemAnimator defaultItemAnimator = new DefaultItemAnimator();
defaultItemAnimator.setRemoveDuration(2000);
defaultItemAnimator.setAddDuration(2000);
defaultItemAnimator.setChangeDuration(2000);
rv1.setItemAnimator(defaultItemAnimator);
myAbsert1.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(@NonNull BaseQuickAdapter<?, ?> adapter, @NonNull View view, int position) {
list.remove(position);
myAbsert1.notifyItemRemoved(position);
}
});
//左右滑动删除
ItemTouchHelper itemTouchHelper = new ItemTouchHelper(new ItemTouchHelper.Callback() {
@Override
public int getMovementFlags(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder) {
int x= ItemTouchHelper.LEFT|ItemTouchHelper.RIGHT;
return makeMovementFlags(0,x);
}
@Override
public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder target) {
return true;
}
@Override
public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {
int post=viewHolder.getPosition();
list.remove(post);
myAbsert1.notifyItemRemoved(post);
}
});
itemTouchHelper.attachToRecyclerView(rv1);
//子控件点击事件
//环境复杂度
myAbsert1.addChildClickViewIds(R.id.tv);
myAbsert1.addChildClickViewIds(R.id.img);
myAbsert1.setOnItemChildClickListener(new OnItemChildClickListener() {
@Override
public void onItemChildClick(@NonNull BaseQuickAdapter adapter, @NonNull View view, int position) {
int id=view.getId();
if (id== R.id.img){
Toast.makeText(MainActivity.this, "点击图片", Toast.LENGTH_SHORT).show();
}else {
Toast.makeText(MainActivity.this, "点击了文字", Toast.LENGTH_SHORT).show();
}
}
});
//刷新页面
View view = LayoutInflater.from(this).inflate(R.layout.item, null);
banner=view.findViewById(R.id.ba);
myAbsert1.addHeaderView(view);
OkGo.<String>get("http://43.143.146.165:7777/foods/getFoods?pageSize=10¤tPage=1").execute(new StringCallback() {
@Override
public void onSuccess(Response<String> response) {
String s = response.body().toString();
Base base = new Gson().fromJson(s, Base.class);
List<Base.DataBean> data = base.getData();
List<String>stringList=new ArrayList<>();
for (int i = 0; i < data.size(); i++) {
stringList.add(data.get(i).getPic());
}
banner.setImages(stringList);
banner.setImageLoader(new ImageLoader() {
@Override
public void displayImage(Context context, Object path, ImageView imageView) {
Glide.with(context).load(path).into(imageView);
}
});
banner.start();
}
});
}
private void initView() {
rv1 = (RecyclerView) findViewById(R.id.rv1);
}