【问题标题】:Start activity when clicking a child of a listview (Android Studio)单击列表视图的子项时启动活动(Android Studio)
【发布时间】:2021-08-29 23:43:24
【问题描述】:

我创建了一个包含自定义 XML 行的动态列表(它包含一些文本视图和一个“更多信息”按钮)。当我单击更多信息按钮时,我想存储与该行关联的对象并转到另一个活动。我怎样才能做到这一点?谢谢!


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;
}

}

【问题讨论】:

    标签: android android-listview


    【解决方案1】:

    最好使用 RecyclerView 而不是 ListView。

    但在你的情况下,你可以简单地在适配器中使用你的上下文。

            moreInfoBtn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    context.startActivity(new Intent(context, YourActivity.class));
                }
            });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多