Как сделать два разных Конструктора в одном классе - Android - PullRequest
0 голосов
/ 25 декабря 2018

Я думаю, что это можно сделать, но, возможно, я не прав (я уверен, что я не прав).У меня есть этот адаптер, который иногда использует список 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;
}

}

1 Ответ

0 голосов
/ 25 декабря 2018

Из-за стирания типов в Java вы в основном объявляете два конструктора, которые выглядят как SpinnerAdapter(List l1, Activity a, List l2) { } для Java.

Простым решением было бы создать один конструктор и добавить аргумент type.Итак, что-то типа SpinnerAdapter(List l1, Activity a, List l2, int type) { }.

Затем можно проверить значение типа в конструкторе и метод getView(...), чтобы инициализировать переменные по мере необходимости.

...