[英]How to make two different Constructors in the same Class - 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 中的類型擦除,您基本上是在向 Java 聲明兩個類似SpinnerAdapter(List l1, Activity a, List l2) { }
構造函數。
一個簡單的解決方案是創建一個構造函數並添加一個type
參數。 所以,類似於SpinnerAdapter(List l1, Activity a, List l2, int type) { }
。
然后,您可以檢查構造函數中的類型值和getView(...)
方法以根據需要初始化變量。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.