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

Android中点击控件移除String数组首个元素失效,求解决方案

Android点击控件后更新AutoCompleteTextView数据源问题

你遇到的问题有两个核心原因:

  1. Skip(1).ToArray()是C# LINQ的语法,Android Java环境根本不支持这行代码,它连编译都通不过
  2. 就算能生成新数组,你没有通知适配器数据源发生变化,AutoCompleteTextView的UI不会自动更新

解决方案(推荐用ArrayList实现)

把固定长度的数组换成ArrayList,它支持动态修改元素,再配合适配器的notifyDataSetChanged()方法就能实现需求:

AutoCompleteTextView aat_reason_not_presented;
aat_reason_not_presented = findViewById(R.id.aat_reason_not_presented);

// 用ArrayList替代数组,方便动态增删元素
ArrayList<String> reasonsList = new ArrayList<>(Arrays.asList(
    "Unclaimed", "Lost/Stolen", "Damaged/Defective", "Pawned", "Not Turned Over", "Others"
));
ArrayAdapter<String> adapterYesNo = new ArrayAdapter<>(
    getApplicationContext(), 
    android.R.layout.simple_spinner_item, 
    reasonsList
);

adapterYesNo.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
aat_reason_not_presented.setAdapter(adapterYesNo);

aat_distribution_status.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View arg1, int pos, long id) {
        // 避免空列表报错,先判断列表不为空
        if (!reasonsList.isEmpty()) {
            reasonsList.remove(0); // 移除首个元素
            adapterYesNo.notifyDataSetChanged(); // 通知适配器更新UI
        }
    }
});

如果坚持用数组实现(不推荐)

因为Java数组是固定长度的,必须创建新数组后重新设置适配器:

AutoCompleteTextView aat_reason_not_presented;
aat_reason_not_presented = findViewById(R.id.aat_reason_not_presented);

String[] Reasons = new String[]{"Unclaimed", "Lost/Stolen", "Damaged/Defective", "Pawned", "Not Turned Over", "Others"};
ArrayAdapter<String> adapterYesNo = new ArrayAdapter<>(getApplicationContext(), android.R.layout.simple_spinner_item, Reasons);

adapterYesNo.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
aat_reason_not_presented.setAdapter(adapterYesNo);

aat_distribution_status.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View arg1, int pos, long id) {
        if (Reasons.length > 1) {
            // 创建长度减1的新数组
            String[] newReasons = new String[Reasons.length - 1];
            // 复制原数组从索引1开始的元素到新数组
            System.arraycopy(Reasons, 1, newReasons, 0, newReasons.length);
            Reasons = newReasons;
            // 重新创建适配器并设置给控件
            adapterYesNo = new ArrayAdapter<>(
                getApplicationContext(), 
                android.R.layout.simple_spinner_item, 
                Reasons
            );
            adapterYesNo.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            aat_reason_not_presented.setAdapter(adapterYesNo);
        }
    }
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 09:50:26