package io.evercam.androidapp.custom; import android.app.Activity; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.TextView; import java.util.ArrayList; import io.evercam.androidapp.R; import io.evercam.androidapp.dto.AppUser; public class CustomAdapter extends ArrayAdapter<AppUser> { private ArrayList<AppUser> appUsers; private Activity activity; private int itemLayoutId = 0; private int emailViewId = 0; private int newItemLayoutid = 0; AppUser fakeUser = null; public CustomAdapter(Activity activity, int itemLayoutId, int newItemLayoutResource, int itemTextViewIdToDislayNameOfUser, ArrayList<AppUser> appUsers) { super(activity, itemLayoutId, itemTextViewIdToDislayNameOfUser, appUsers); this.appUsers = appUsers; if(this.appUsers != null && this.appUsers.size() > 0 && this.appUsers.get(this.appUsers .size() - 1).getId() == -1) { fakeUser = this.appUsers.get(this.appUsers.size() - 1); } else { this.fakeUser = new AppUser(); fakeUser.setId(-1); this.appUsers.add(fakeUser); // add at the end } this.activity = activity; this.itemLayoutId = itemLayoutId; emailViewId = itemTextViewIdToDislayNameOfUser; newItemLayoutid = newItemLayoutResource; } @Override public View getView(int position, View convertView, ViewGroup parent) { View view = convertView; final AppUser appUser = appUsers.get(position); if(view == null) { LayoutInflater layoutInflater = (LayoutInflater) activity.getSystemService(Context .LAYOUT_INFLATER_SERVICE); view = ((appUser != fakeUser) ? layoutInflater.inflate(itemLayoutId, null) : layoutInflater.inflate(newItemLayoutid, null)); } if(appUser != null && appUser != fakeUser) { ((TextView) view.findViewById(emailViewId)).setText(appUser.getEmail()); TextView usernameTextView = (TextView) view.findViewById(R.id.account_item_username); usernameTextView.setText(appUser.getUsername() + (appUser.getIsDefault() ? " - " + "Default" : "")); } return view; } }