未从 ListView 中删除对象

我正在 Android Studios 中创建一个简单的任务列表应用程序。


我有以下两项活动(删除了进口和包装规格):


MainActivity.java


public 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 的大小确认这不仅仅是一个图形问题。为什么会这样,我应该如何解决它?


感谢您提前回复。


眼眸繁星
浏览 93回答 1
1回答

慕沐林林

问题是您使用的是对象引用而不是原始数据类型,因此当您调用 taskArray.remove(pos) 时,它正在寻找 pos 对象而不是其表示的整数值。代替:taskArray.remove(pos);尝试:taskArray.remove(pos.intValue());
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java