我正在尝试为Android制作待办事项列表应用。这个程序有两个活动。主要活动是我的EditText和Submit按钮。第二个活动有一个ListView,它将填充MainActivity EditText中的数据。
MainActivity.java
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void goToListView(View view) {
EditText eT = (EditText) findViewById(R.id.enterTasks);
Intent intent = new Intent(this, SecondActivity.class);
intent.putExtra("tasks", eT.getText().toString());
startActivity(intent);
}
}
我相信数据正确传递,因为我可以将数据放入第二个活动的TextView中。
我的第二个Activity有ArrayList和ArrayAdapter设置。我的问题是我不知道将额外传递到ArrayAdapter的位置。
SecondActivity.java
public class SecondActivity extends AppCompatActivity {
private ArrayList<String> arrayListToDo;
private ArrayAdapter<String> arrayAdapterToDo;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list_view);
arrayListToDo = new ArrayList<>();
arrayAdapterToDo = new ArrayAdapter<> (this, android.R.layout.simple_list_item_1,
arrayListToDo);
ListView listView = (ListView)findViewById(R.id.listView);
listView.setAdapter(arrayAdapterToDo);
TextView nameView = (TextView) findViewById(R.id.textView);
nameView.setText(getIntent().getExtras().getString("tasks"));
}
}
我意识到如果我改变状态,我的数据将不会被保存。当我在寻找答案时,我发现了这一点。我的问题是我应该把我的额外内容放到ArrayAdapter中?非常感谢你花时间回答我的问题。我真的很感激。
答案 0 :(得分:0)
你正在传递一个字符串。第一个问题是,如果该String可以包含许多不同的值(例如,用“,”分隔),或者它只是一个任务。 我认为他们可以很多,因为额外的名称是“任务”。
因此,考虑到这一点,您有两种可能性:
1)保留String参数,然后将内容解析为数组,如:
String tasksExtra = getIntent().getExtras().getString("tasks");
String[] tasks = tasksExtra.split(","); // if your separator is the comma.
然后将tasks数组传递给ArrayAdapter:
arrayAdapterToDo = new ArrayAdapter<> (this, android.R.layout.simple_list_item_1,
tasks);
2)在您的MainActivity中,您有一个EditText,一个“+”按钮和提交按钮。当用户输入任务时,他可以按“+”按钮,这会将任务添加到String列表(您可以在下面显示),清除EditText并允许用户添加更多任务。 然后,当用户按下提交时,您可以将String数组作为额外的传递:
intent.putStringArrayListExtra("tasks", yourStringArrayList);
或
intent.putStringArrayExtra("tasks", yourStringArray);
并直接在SecondActivity中使用它:
ArrayList<String> tasks = getIntent().getExtras().getStringArrayListExtra("tasks");
arrayAdapterToDo = new ArrayAdapter<> (this, android.R.layout.simple_list_item_1,
tasks);
或
String[] tasks = getIntent().getExtras().getStringArrayExtra("tasks");
arrayAdapterToDo = new ArrayAdapter<> (this, android.R.layout.simple_list_item_1,
tasks);