为了账号安全,请及时绑定邮箱和手机立即绑定

未从 ListView 中删除对象

未从 ListView 中删除对象

眼眸繁星 2023-05-17 16:53:34
我正在 Android Studios 中创建一个简单的任务列表应用程序。我有以下两项活动(删除了进口和包装规格):MainActivity.javapublic class MainActivity extends AppCompatActivity implements View.OnClickListener, AdapterView.OnItemClickListener {    EditText taskAdd;    Button add;    public ListView tasks;    public Integer pos = 0;    public ArrayList<String> taskArray;    public ArrayAdapter<String> adapter;    @Override    protected void onCreate(Bundle savedInstanceState){        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        taskAdd = findViewById(R.id.taskAdd);        add = findViewById(R.id.add);        tasks = findViewById(R.id.tasks);        taskArray = FileHelper.readData(this);        adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, taskArray);        tasks.setAdapter(adapter);        add.setOnClickListener(this);        tasks.setOnItemClickListener(this);    }    @Override    public void onClick(View v) {        switch(v.getId()){            case R.id.add:                String entered = taskAdd.getText().toString();                if (entered != "" || entered != null || entered != "null") {                    adapter.add(entered);                    taskAdd.setText("");                    FileHelper.writeData(taskArray, this);                    Toast.makeText(this, "Task Added!", Toast.LENGTH_SHORT).show();                }                break;        }    }    @Override    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {        pos = position;        Intent intent = new Intent(MainActivity.this, Pop.class);        startActivity(intent);    }    @Override    protected void onNewIntent(Intent intent) {        super.onNewIntent(intent);        setIntent(intent);        processExtraData();    }在我单击 Pop.java 中的 deleteButton 后,MainActivity.java 中的 processExtraData 应该会运行。Toast确实出现了,但是ListView中选中的对象并没有被删除。也不会抛出任何错误。此外,使用 Log.d 检查 taskArray 的大小确认这不仅仅是一个图形问题。为什么会这样,我应该如何解决它?感谢您提前回复。
查看完整描述

1 回答

?
慕沐林林

TA贡献2016条经验 获得超9个赞

问题是您使用的是对象引用而不是原始数据类型,因此当您调用 taskArray.remove(pos) 时,它正在寻找 pos 对象而不是其表示的整数值。

代替:

taskArray.remove(pos);

尝试:

taskArray.remove(pos.intValue());


查看完整回答
反对 回复 2023-05-17
  • 1 回答
  • 0 关注
  • 92 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信