Android 如何使用位置或索引替换listView中单击的项

Android 如何使用位置或索引替换listView中单击的项,android,listview,android-listview,Android,Listview,Android Listview,我正在使用todolist应用程序,无法在listview中编辑项目。“编辑”按钮与“添加”按钮类似。旧项目不会被删除。当使用(ListView.getSelectedItemPosition(),myobject)程序时,会给出arrayindexoutofboundsexception 这里是EditItem.java editButton.setOnClickListener(new OnClickListener() { @Override public

我正在使用todolist应用程序,无法在listview中编辑项目。“编辑”按钮与“添加”按钮类似。旧项目不会被删除。当使用(ListView.getSelectedItemPosition(),myobject)程序时,会给出arrayindexoutofboundsexception

这里是EditItem.java

editButton.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View arg0) {
            // ArrayList<String> b = new ArrayList<String>();

            task = editText1.getText().toString();
            priorityLevel = spinner.getSelectedItem().toString();
            status = toggleButton.getText().toString();

            int day = datePicker.getDayOfMonth();
            int month = datePicker.getMonth() + 1;
            int year = datePicker.getYear();

            date = day + "/" + month + "/" + year;

            itemList.setName(task);
            itemList.setPriorityLevel(priorityLevel);
            itemList.setStatus(status);
            itemList.setDueDate(date);

            Intent okIntent = new Intent();
            okIntent.putExtra("editItem", new DataWrapper(itemList));

            setResult(Activity.RESULT_OK, okIntent);
            finish();
        }
    });
editButton.setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图arg0){
//ArrayList b=新的ArrayList();
task=editText1.getText().toString();
priorityLevel=spinner.getSelectedItem().toString();
status=toggleButton.getText().toString();
int day=datePicker.getDayOfMonth();
int month=datePicker.getMonth()+1;
int year=datePicker.getYear();
日期=日+“/”+月+“/”+年;
itemList.setName(任务);
itemList.setPriorityLevel(priorityLevel);
itemList.setStatus(状态);
itemList.setDueDate(日期);
Intent=newintent();
putExtra(“editItem”,新的数据包装器(itemList));
设置结果(Activity.RESULT_OK,okinent);
完成();
}
});
和MainActivity.java

    todoListView.setOnItemClickListener(new OnItemClickListener() {

        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {


            Intent editIntent = new Intent(MainActivity.this,
                    EditItem.class);
            startActivityForResult(editIntent, EDIT_NOTE);

        }
    });

}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (resultCode == Activity.RESULT_OK) {

        switch (requestCode) {

        case EDIT_NOTE:

            DataWrapper dw2 = (DataWrapper) data
                    .getSerializableExtra("editItem");
            entry = dw2.getEntry();

            todoItems.set(todoListView.getSelectedItemPosition(), entry);
            todoArrayAdapter.notifyDataSetChanged();
            break;
        default:
            break;
        }

    }
    super.onActivityResult(requestCode, resultCode, data);
}
todoListView.setOnItemClickListener(新的OnItemClickListener(){
public void onItemClick(AdapterView父级、视图、,
内部位置,长id){
意向编辑意向=新意向(MainActivity.this,
编辑项(类);
startActivityForResult(编辑意图,编辑注释);
}
});
}
@凌驾
受保护的void onActivityResult(int请求代码、int结果代码、意图数据){
if(resultCode==Activity.RESULT\u确定){
开关(请求代码){
案例编辑注意:
DataWrapper dw2=(DataWrapper)数据
.getSerializableExtra(“编辑项”);
entry=dw2.getEntry();
设置(todoListView.getSelectedItemPosition(),条目);
ToDoarayAdapter.notifyDataSetChanged();
打破
违约:
打破
}
}
super.onActivityResult(请求代码、结果代码、数据);
}

您可以尝试从单击中给出位置

todoListView.setOnItemClickListener(new OnItemClickListener()
到全局整数

然后做:

todoItems.set(globalInt, entry);