2017-08-29 69 views
0

我已经构建了一个应用程序,允许我将项目添加到列表视图中,然后通过长时间点击删除这些项目并进行编辑。但是,我无法编辑超过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(""); 
    } 
} 
+0

你试过调试吗? –

+0

您只发送一个要编辑的项目,因此只有一个项目被编辑。如果你想编辑多个项目,发送一个列表到EditItemActivity –

+0

是的,但我找不到任何东西。 –

回答

0

基本上我做的是采取的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(); 
    } 
} 
相关问题