适配器模式,参照RecyclerView的Adapter
作为两个不兼容的接口之间的桥梁
让两个没有关系的类联系到一起
抄袭龙哥卖鸡排的栗子😀:
我想吃鸡排和雪糕
重邮对面有一家正新鸡排还有一家蜜雪冰城(这是两个接口)
public interface JiPai {
public void sellFood(String thing);
}
public interface Juice {
public void sellIcecream(String icecream);
public void sellMilk(String milk);
}
//鸡排店买鸡排(实体类)
蜜雪冰城买雪糕和奶茶(实体类)
package com.company.AdapterDemo;
/**
* @author 珝珞
* @date 2020/3/11
* @project name redrock1
*/
public class MXBC implements Juice{
@Override
public void sellIcecream(String icecream) {
System.out.println("卖雪糕");
}
@Override
public void sellMilk(String milk) {
System.out.println("卖奶茶");
}
}
这时正新鸡排的店员告诉我,他可以帮我去买雪糕(适配器)
package com.company.AdapterDemo;
/**
* @author 珝珞
* @date 2020/3/11
* @project name redrock1
*/
public class JPAdapter implements JiPai {
Juice juice;
public JPAdapter(String thing){
if (thing.equalsIgnoreCase("雪糕")||thing.equalsIgnoreCase("奶茶")){
juice = new MXBC();
}
}
@Override
public void sellFood(String thing) {
if (thing.equalsIgnoreCase("雪糕")){
juice.sellIcecream(thing);
}else if (thing.equalsIgnoreCase("奶茶")){
juice.sellMilk(thing);
}
}
}
然后他就去买鸡排和雪糕啦(实体类,实现了卖鸡排和卖雪糕)
public class ZXJP implements JiPai{
JPAdapter jpAdapter;
@Override
public void sellFood(String thing) {
//这是本来店里就卖的
if (thing.equalsIgnoreCase("鸡排")){
System.out.println("卖鸡排");
}
//这是蜜雪冰城卖的
else if (thing.equalsIgnoreCase("雪糕")||thing.equalsIgnoreCase("奶茶")){
jpAdapter = new JPAdapter(thing);
jpAdapter.sellFood(thing);
}else {
System.out.println("没有这个卖哦");
}
}
}
然后我就吃到了鸡排和雪糕啦🤭(主函数)
public class Mine {
public static void main(String[] args) {
ZXJP zxjp = new ZXJP();
zxjp.sellFood("鸡排");
zxjp.sellFood("雪糕");
}
}
下面是recycleview的例子:
package com.example.welcomedemo.adaptor;
import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.example.welcomedemo.R;
import java.util.List;
public class RecycleviewAdapter extends RecyclerView.Adapter<RecycleviewAdapter.ViewHolder> {
private Context context;
private List<String> data;
//初始化
public RecycleviewAdapter(Context context, List<String> data){
this.context = context;
this.data = data;
}
//这里是重写的三个方法
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(context).inflate(R.layout.activity_recycleview_adapter,parent,false);
return new ViewHolder(view);
}
//设置每一行的点击事件
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, final int position) {
holder.name.setText(data.get(position));
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.e("这里是点击每一行的响应",""+position);
}
});
}
//返回列表的长度
@Override
public int getItemCount() {
return data.size();
}
public class ViewHolder extends RecyclerView.ViewHolder{
private TextView name;
public ViewHolder(View view) {
super(view);
name = view.findViewById(R.id.name);
}
}
}
在activity中显示recycleview
RecycleviewAdapter adapter = new RecycleviewAdapter(this,data);
// 给recyclerview设置布局管理器,否则不显示内容
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setAdapter(adapter);