繁体   English   中英

如何在同一个类中创建两个不同的构造函数 - Android

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM