适配器 Android
在Android开发中,适配器(Adapter)是一种常见的设计模式,用于将数据和界面进行绑定,实现数据的展示。适配器在Android中的应用非常广泛,最常见的例子就是ListView和RecyclerView的适配器。
适配器的作用是将数据源和显示层进行解耦,使得数据的变化不会影响到界面的显示。通过适配器模式,我们可以轻松地实现数据的展示和交互。
ListView适配器示例
下面是一个使用ListView的适配器的示例:
public class MyAdapter extends BaseAdapter {
private List<String> mData;
private Context mContext;
public MyAdapter(List<String> data, Context context) {
mData = data;
mContext = context;
}
@Override
public int getCount() {
return mData.size();
}
@Override
public Object getItem(int position) {
return mData.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = LayoutInflater.from(mContext).inflate(R.layout.list_item, parent, false);
holder = new ViewHolder();
holder.textView = convertView.findViewById(R.id.text_view);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
String item = mData.get(position);
holder.textView.setText(item);
return convertView;
}
private static class ViewHolder {
TextView textView;
}
}
在上面的代码中,我们自定义了一个MyAdapter类,继承自BaseAdapter。在适配器的构造方法中,我们传入了数据源和上下文。在getView()方法中,我们使用ViewHolder模式来复用布局,并将数据绑定到界面上。
RecyclerView适配器示例
对于RecyclerView,适配器的写法略有不同:
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
private List<String> mData;
private Context mContext;
public MyAdapter(List<String> data, Context context) {
mData = data;
mContext = context;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(mContext).inflate(R.layout.list_item, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
String item = mData.get(position);
holder.textView.setText(item);
}
@Override
public int getItemCount() {
return mData.size();
}
public static class ViewHolder extends RecyclerView.ViewHolder {
TextView textView;
public ViewHolder(@NonNull View itemView) {
super(itemView);
textView = itemView.findViewById(R.id.text_view);
}
}
}
在上面的代码中,我们同样自定义了一个MyAdapter类,这次继承自RecyclerView.Adapter。在 onCreateViewHolder()方法中,我们创建并返回一个ViewHolder对象。在 onBindViewHolder()方法中,我们将数据绑定到ViewHolder中的控件上。在 getItemCount()方法中,我们返回数据源的大小。
这两个示例中的适配器都用到了布局文件R.layout.list_item,我们可以根据实际需要进行修改。
总结
适配器是Android开发中常用的设计模式之一,用于将数据和界面进行解耦,实现数据的展示和交互。适配器模式可以使得我们的代码更加清晰,易于维护和扩展。
通过上面的例子,我们可以看到,在ListView和RecyclerView中,适配器的使用方法基本相同,只是继承的基类不同。
希望本文能帮助你更好地理解和使用适配器模式。
















