我应该把额外的东西放到 ArrayList 的什么地方?
Where Do I Put My Extra Into An ArrayList?
我正在尝试为 Android 制作一个待办事项列表应用程序。这个应用程序有两个活动。主 activity 是我的 EditText 和提交按钮所在的位置。第二个 activity 有一个 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);
}
}
我相信数据已正确传递,因为我可以在第二个 activity 中将该数据放入 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 的什么地方?非常感谢您抽出时间回答我的问题。非常感谢。
您在该额外内容中传递了一个字符串。第一个问题是该 String 是否可以包含许多不同的值(例如,用“,”分隔)或者它是否只是一个任务。
我假设它们可以很多,因为额外的名称是 "tasks".
所以考虑到这一点,你有两种可能性:
1)保留String参数,然后将内容解析成数组,如:
String tasksExtra = getIntent().getExtras().getString("tasks");
String[] tasks = tasksExtra.split(","); // if your separator is the comma.
然后将任务数组传递给 ArrayAdapter:
arrayAdapterToDo = new ArrayAdapter<> (this, android.R.layout.simple_list_item_1,
tasks);
2) 在您的 MainActivity 中,您有一个 EditText、一个“+”按钮和一个提交按钮。当用户输入任务时,他可以按“+”按钮,这会将任务添加到字符串列表(您可以在下面显示),清除 EditText 并允许用户添加更多任务。
然后,当用户按下提交时,您可以将字符串数组作为额外的传递:
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);
我正在尝试为 Android 制作一个待办事项列表应用程序。这个应用程序有两个活动。主 activity 是我的 EditText 和提交按钮所在的位置。第二个 activity 有一个 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);
}
}
我相信数据已正确传递,因为我可以在第二个 activity 中将该数据放入 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 的什么地方?非常感谢您抽出时间回答我的问题。非常感谢。
您在该额外内容中传递了一个字符串。第一个问题是该 String 是否可以包含许多不同的值(例如,用“,”分隔)或者它是否只是一个任务。 我假设它们可以很多,因为额外的名称是 "tasks".
所以考虑到这一点,你有两种可能性:
1)保留String参数,然后将内容解析成数组,如:
String tasksExtra = getIntent().getExtras().getString("tasks");
String[] tasks = tasksExtra.split(","); // if your separator is the comma.
然后将任务数组传递给 ArrayAdapter:
arrayAdapterToDo = new ArrayAdapter<> (this, android.R.layout.simple_list_item_1,
tasks);
2) 在您的 MainActivity 中,您有一个 EditText、一个“+”按钮和一个提交按钮。当用户输入任务时,他可以按“+”按钮,这会将任务添加到字符串列表(您可以在下面显示),清除 EditText 并允许用户添加更多任务。 然后,当用户按下提交时,您可以将字符串数组作为额外的传递:
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);