无法在我的待办事项应用程序中编辑超过1个列表项目
问题描述:
我已经构建了一个应用程序,允许我将项目添加到列表视图中,然后通过长时间点击删除这些项目并进行编辑。但是,我无法编辑超过1项。我的第一个编辑作品和项目被更新,但之后,我尝试编辑的任何其他项目都保持不变。无法在我的待办事项应用程序中编辑超过1个列表项目
这里是我的类,它是负责编辑:
public class EditItemActivity extends AppCompatActivity {
EditText editToDo;
String itemPos;
Button saveChanges;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_edit_item);
editToDo = (EditText) findViewById(R.id.edit_todo_item);
saveChanges = (Button)findViewById(R.id.save_changes);
String item = getIntent().getStringExtra("item");
editToDo.setText(item);
itemPos = getIntent().getStringExtra("itemPos");
saveChanges.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
onSubmit();
}
});
}
public void onSubmit() {
Intent item = new Intent();
item.putExtra("item", editToDo.getText().toString());
item.putExtra("itemPos", itemPos);
setResult(RESULT_OK, item);
finish();
}
}
的startActivityForResult
及其相应的方法被称为我的MainActivity:
public class MainActivity extends AppCompatActivity {
private final int REQUEST_CODE = 10;
ArrayList <String> toDoItems = new ArrayList<>();
ArrayAdapter<String> adapter;
ListView listItems;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listItems = (ListView) findViewById(R.id.listViewItems);
adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, toDoItems);
listItems.setAdapter(adapter);
listItems.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> adapter, View item, int position, long id) {
toDoItems.remove(position);
MainActivity.this.adapter.notifyDataSetChanged();
return true;
}
});
listItems.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapter, View item, int pos, long id) {
Intent intent = new Intent(MainActivity.this, EditItemActivity.class);
intent.putExtra("item", toDoItems.get(pos));
intent.putExtra("itemPos", String.valueOf(pos));
startActivityForResult(intent, REQUEST_CODE);
}
});
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK && requestCode == REQUEST_CODE) {
String item = data.getStringExtra("item");
int itemPosition = Integer.parseInt(data.getStringExtra("itemPos"));
toDoItems.set(itemPosition, item);
adapter.notifyDataSetChanged();
}
}
public void addItem(View v){
EditText newItem = (EditText) findViewById(R.id.itemInputEditText);
String item = newItem.getText().toString();
adapter.add(item);
newItem.setText("");
}
}
答
基本上我做的是采取的OguzhanDöngül的建议,并添加到它上面。因此,在我的onActivityResult
方法中,这是我所做的:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK && requestCode == REQUEST_CODE) {
String item = data.getStringExtra("item");
int itemPosition = Integer.parseInt(data.getStringExtra("itemPos"));
toDoItems.add(itemPosition, item);
toDoItems.remove(itemPosition + 1);
adapter.notifyDataSetChanged();
}
}
你试过调试吗? –
您只发送一个要编辑的项目,因此只有一个项目被编辑。如果你想编辑多个项目,发送一个列表到EditItemActivity –
是的,但我找不到任何东西。 –