Reputation: 33
I made a dynamic list with custom XML rows (it contains some textviews and a "More info" button). When I click the more info button, I want to store the object associated with the row and go to another activity. How can I do that? Thanks!
MainActivity.java
TripAdapter adapter = new TripAdapter(this, trips);
ListView listView = (ListView) findViewById(R.id.listview);
listView.setAdapter(adapter);
// How can I get the 'Trip' object when I click the more info button and then go to another activity?
TripAdapter.java
public class TripAdapter extends ArrayAdapter<Trip> {
public static Trip currentTrip;
public Context context;
public TripAdapter(Context context, ArrayList<Trip> trips){
super(context, R.layout.row_trip, trips);
this.context = context;
}
@RequiresApi(api = Build.VERSION_CODES.O)
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// Get the data item for this position
Trip trip = getItem(position);
// Check if an existing view is being reused, otherwise inflate the view
if (convertView == null) {
convertView = LayoutInflater.from(getContext()).inflate(R.layout.row_trip, parent, false);
}
// Lookup view for data population
ConstraintLayout MainContainer = (ConstraintLayout) convertView.findViewById(R.id.trip_container) ;
TextView directions = (TextView) convertView.findViewById(R.id.directions);
ImageView Image=(ImageView) convertView.findViewById(R.id.transportTypeIcon);
TextView TransportType = (TextView) convertView.findViewById(R.id.transportTypeText);
TextView scheduleTimeText = (TextView) convertView.findViewById(R.id.scheduleTimeText);
TextView tickerPriceText = (TextView) convertView.findViewById(R.id.tickerPriceText);
Button moreInfoBtn = (Button) convertView.findViewById(R.id.moreInfoBtn);
ImageButton Timeicon = (ImageButton) convertView.findViewById(R.id.iconTime);
ImageButton moneyicon = (ImageButton) convertView.findViewById(R.id.iconMoney);
// set do tipo de transporte
TransportType.setText(trip.getTransport_type());
//set do preço
DecimalFormat df2 = new DecimalFormat("#.##");
tickerPriceText.setText(df2.format(trip.getPrice()) + "€");
//moreinfo.setClickable(true);
//set do tempo e demora
scheduleTimeText.setText(trip.getTripTime());
//set das directions
String direction = trip.getOrigin_address() + " ➝ " + trip.getDestiny_address();
directions.setText(direction);
//set da imagem do tipo de transporte
// Return the completed view to render on screen
return convertView;
}
}
Upvotes: 1
Views: 214
Reputation: 441
It's better to use RecyclerView instead of ListView.
But in your case, you can simply use your context in adapter.
moreInfoBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
context.startActivity(new Intent(context, YourActivity.class));
}
});
Upvotes: 3