我在哪里把我的额外放入ArrayList?

时间:2015-09-15 23:31:00

标签: android-listview android-studio android-arrayadapter

我正在尝试为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中?非常感谢你花时间回答我的问题。我真的很感激。

1 个答案:

答案 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);