You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android开发:如何将多个参与者EditText的值存入List<String>并传递至Meeting对象实现提交与展示

解决方案:收集参与者邮箱并在RecyclerView展示

没问题,我来一步步帮你实现这个功能:

1. 先修正示例代码中的参与者列表写法

首先注意你的DummyMeetingGenerator里的参与者列表写法有问题——原代码把所有邮箱放在一个字符串里,这会导致List只有一个元素。正确的写法应该是每个邮箱单独作为List的一个元素:

public abstract class DummyMeetingGenerator { 
    public static List<String> participants = Arrays.asList( 
        "nouveau@gmail.com", 
        "ancien@gmail.com", 
        "super@gmail.com", 
        "nul@gmail.com"
    ); 
    public static List<Meeting> DUMMY_MEETINGS = Arrays.asList( 
        new Meeting(1, "14:00", "Room A", " Future Project ", participants )
    ); 
    static List<Meeting> generateMeetings() { 
        return new ArrayList<>(DUMMY_MEETINGS); 
    }
}

2. 修改AddMeetingActivity,收集参与者邮箱到List

在addMeeting()方法里,我们需要把四个EditText的内容收集到List<String>中,同时过滤掉空输入(避免无效的空字符串加入列表):

@BindView(R.id.my_toolbar2) Toolbar mToolbar; 
@BindView(R.id.in_time) EditText txtTime; 
@BindView(R.id.in_place) EditText txtPlace; 
@BindView(R.id.in_comment) EditText txtComment; 
@BindView(R.id.participant) EditText txtParticipant; 
@BindView(R.id.participant2) EditText txtParticipant2; 
@BindView(R.id.participant3) EditText txtParticipant3; 
@BindView(R.id.participant4) EditText txtParticipant4; 

@OnClick(R.id.create) void addMeeting(){ 
    // 初始化参与者列表
    List<String> participants = new ArrayList<>();
    
    // 逐个获取输入框内容,仅添加非空文本
    addIfNotEmpty(participants, txtParticipant.getText().toString().trim());
    addIfNotEmpty(participants, txtParticipant2.getText().toString().trim());
    addIfNotEmpty(participants, txtParticipant3.getText().toString().trim());
    addIfNotEmpty(participants, txtParticipant4.getText().toString().trim());

    // 创建Meeting对象,传入参与者列表
    Meeting meeting = new Meeting(
        System.currentTimeMillis(), 
        txtTime.getText().toString().trim(), 
        txtPlace.getText().toString().trim(), 
        txtComment.getText().toString().trim(),
        participants
    ); 
    mApiService.createMeeting(meeting); 
    finish(); 
}

// 辅助方法:过滤空字符串
private void addIfNotEmpty(List<String> list, String text) {
    if (!text.isEmpty()) {
        list.add(text);
    }
}

3. 确保Meeting类支持参与者列表参数

你的Meeting类需要更新构造函数,添加List<String>类型的参与者参数,同时提供getter方法供RecyclerView Adapter使用:

public class Meeting {
    private long id;
    private String time;
    private String place;
    private String comment;
    private List<String> participants;

    // 更新构造函数,加入参与者列表
    public Meeting(long id, String time, String place, String comment, List<String> participants) {
        this.id = id;
        this.time = time;
        this.place = place;
        this.comment = comment;
        this.participants = participants;
    }

    // 提供getter方法
    public List<String> getParticipants() {
        return participants;
    }

    // 根据需求添加其他getter/setter方法
}

4. 调整RecyclerView Adapter,展示参与者列表

在你的Meeting列表Adapter中,把List<String>转成适合展示的字符串格式,然后设置到TextView中。这里提供两种常用的展示方式:

方式一:逗号分隔展示

@Override
public void onBindViewHolder(MeetingViewHolder holder, int position) {
    Meeting meeting = meetingList.get(position);
    
    // 设置其他字段(时间、地点等)
    holder.timeTv.setText(meeting.getTime());
    holder.placeTv.setText(meeting.getPlace());
    
    // 处理参与者列表:转成逗号分隔的字符串
    List<String> participants = meeting.getParticipants();
    String participantsText = String.join(", ", participants);
    holder.participantsTv.setText(participantsText);
}

方式二:每行一个邮箱(换行分隔)

@Override
public void onBindViewHolder(MeetingViewHolder holder, int position) {
    Meeting meeting = meetingList.get(position);
    
    // 设置其他字段...
    
    List<String> participants = meeting.getParticipants();
    String participantsText = String.join("\n", participants);
    holder.participantsTv.setText(participantsText);
    // 可以给TextView添加android:maxLines="4"属性限制行数
}

5. 确认API接口兼容性

最后要确保你的mApiService.createMeeting()方法已经更新,能够接收包含参与者列表的Meeting对象,同时后端接口也能正确解析这个List参数。

内容的提问来源于stack exchange,提问作者Hwoarang54

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 12:17:29