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
?
- Prueba de unidad de presentador con RxJava CompositeSubscription
- ¿Cómo distinguir entre diferentes redes wifi?
- Android Preferences error, "String no se puede convertir en int"
- SQLiteAssetHelper: No se pudo abrir la base de datos para escribir (intentará leer sólo)
- Android Studio - ProGuard "java.io.IOException ... bin \ classes (Ningún archivo o directorio)"
- ¿Cómo puedo importar ShowcaseView en Eclipse?
- Enviar objetos JSON utilizando métodos POST
- No se puede conectar mediante httpconnection en android
- Motivo de la llamada a shutdown () en ExecutorService
- Android SurfaceHolder.unlockCanvasAndPost () no causa redibujo
- ¿Qué tipo de formatos de imagen debo utilizar en una aplicación de Android?
- Actualizar City Spinner con notifyDataSetChanged después de seleccionar estado
- ¿Cuáles son las consecuencias si intentamos conectar un hilo nativo permanentemente a la DVM (JVM)?
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);
- UnityWebRequest Incorporación de datos de usuario y contraseña para la autenticación HTTP básica que no funciona en Android
- androide vista url en la disposición xml