Java – Crear referencia a dos modelos en un adaptador personalizado

Tengo dos modelos llamados Buyer y Car , y un diseño personalizado llamado custom_row para mostrar las filas de un ListView .

 public class CustomAdapter extends BaseAdapter { Context c; ArrayList<Buyer> buyers; public CustomAdapter(Context c, ArrayList<Buyer> buyers) { this.c = c; this.buyers = buyers; } @Override public int getCount() { return buyers.size(); } @Override public Object getItem(int position) { return buyers.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) { convertView = LayoutInflater.from(c).inflate(R.layout.custom_row, parent, false); } TextView tvBuyerName = (TextView) convertView.findViewById(R.id.tvBuyerName); TextView tvCarModel = (TextView) convertView.findViewById(R.id.tvCarModel); final Buyer b = (Buyer) this.getItem(position); tvBuyerName.setText(b.getBuyerName()); return convertView; } } 

Hasta ahora sólo he hecho por encima del código, y sólo puedo mostrar el nombre del comprador. ¿Cómo crear otra referencia en ArrayList al modelo de Car , para que pueda obtener y mostrar la información de ambos modelo de Buyer y modelo de Car en un mismo ListView ?

Una forma es crear un modelo que contenga tanto datos de coches y comprador . Por eso yo puede acceder a coche y comprador del mismo arraylist.

Otro es pasar dos arraylist (carList & buyerList) al constructor del adaptador.

 ArrayList<Buyer> buyers; ArrayList<Car> cars; public CustomAdapter(Context c, ArrayList<Buyer> buyers, ArrayList<Car> cars) { this.c = c; this.buyers = buyers; this.cars= cars; } 

Entonces

 final Buyer b = (Buyer) buyers.getItem(position); tvBuyerName.setText(b.getBuyerName()); final Car c = (Car) cars.getItem(position); tvCar.setText(c.getCarName()); 

Puede crear una nueva clase con el Buyer y el Car como atributos:

 class Transaction{ public Buyer buyer; public Car car; } 

y utilizarlo en su ArrayList ( ArrayList<Transaction> ).

En lugar de crear ArrayList de Buyer crear ArrayList de Pair<Buyer,Car> esta manera:

 ArrayList<Pair<Buyer,Car>> myBuyAndCarPair; 

Y cuando usted desea conseguir el Buyer o los objetos del Car llaman como esto:

 Buyer myBuyer = myBuyAndCarPair.get(i).first; Car myCar = myBuyAndCarPair.get(i).second; 

Para crear un nuevo par:

 new Pair<>(mBuyerObject,mCarObject); 
  • Qué se llama después del método onConfigurationchanged ()
  • Android: convierte textView en una salida de registro
  • No se puede encontrar la clase de símbolo "Generated" para Dagger 2
  • Recuperación de datos de puntero de Parse.com en Android
  • Android JUnit Pruebas no se ejecutan
  • Error de compilación de Maven para android Proyecto "error: paquete R no existe"
  • No se pudo encontrar la clase 'android.graphics.drawable.RippleDrawable' Unicode issue?
  • Android Realm, objetos de consulta por atributo secundario
  • Arrastrar y soltar + dibujo personalizado en Android
  • Spinner con en el oyente del tecleo
  • Precargar algunas imágenes para listview con UniversalImageLoader
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.