java - 如何在同一个类中创建两个不同的构造函数 - Android
问题描述
我认为这是可以做到的,但也许我错了(我确定我错了)。我有这个适配器,它有时使用 Class1 列表,而在其他时候使用 Class2 列表。那么,我可以做两个不同的构造函数,其中第一个我使用 List1 而另一个我使用 List2?
public class SpinnerAdapter extends BaseAdapter {
private List<String> listaDeTexto;
private Activity activity;
private LayoutInflater layoutInflater;
private List<MetodoDePago> listaMetodosDePago;
private List<Banco> listaDeBancos;
public SpinnerAdapter(List<String> listaDeTexto, Activity activity, List<MetodoDePago> listaMetodosDePago) {
this.listaDeTexto = listaDeTexto;
this.activity = activity;
this.layoutInflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
this.listaMetodosDePago = listaMetodosDePago;
}
public SpinnerAdapter(List<String> listaDeTexto, Activity activity, List<Banco> listaDeBancos) {
this.listaDeTexto = listaDeTexto;
this.activity = activity;
this.layoutInflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
this.listaDeBancos = listaDeBancos;
}
@Override
public int getCount() {
return listaDeTexto.size();
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = convertView;
if (convertView == null){
view = layoutInflater.inflate(R.layout.spinner_custom,null);
}
TextView textView = view.findViewById(R.id.textViewSpinner);
textView.setText(listaDeTexto.get(position));
ImageView imageView = view.findViewById(R.id.imgViewSpinner);
Glide.with(view)
.load(listaMetodosDePago.get(position).getThumbnail())
.into(imageView);
return view;
}
}
解决方案
由于 Java 中的类型擦除,您基本上是在SpinnerAdapter(List l1, Activity a, List l2) { }
向 Java 声明两个看起来像的构造函数。
一个简单的解决方案是创建一个构造函数并添加一个type
参数。所以,像,SpinnerAdapter(List l1, Activity a, List l2, int type) { }
。
然后,您可以检查构造函数中的类型值以及getView(...)
根据需要初始化变量的方法。
推荐阅读
- shopify - 从asset_url获取特定的图片尺寸
- laravel-5.7 - Laravel file_put_contents(..../session/....) 无法打开流
- javascript - Svelte:如何仅在承诺未挂起时显示某些内容?
- python - Keras 错误:预计会看到 1 个数组,但得到了以下 2 个数组的列表
- javascript - 滚动处理程序仅在鼠标滚轮上工作,如何检测触摸板?
- matlab - 是否可以根据时间对数据进行排序?
- git - How to block pulling from the master branch in a git repo
- java - 自定义任务中的 Gradle 设置属性
- keycloak - 带有弹簧应用程序的 KeycloakRestTemplate
- javascript - 主菜单导航栏