将ArrayList传递给另一个Activity而不显示结果?

时间:2016-04-01 23:38:05

标签: android

这是我的第一个问题,所以对我很轻松:) 我是android新手,我正在尝试制作一个简单的列表。在第一个Activity上,用户可以输入数据,该数据应显示为第二个Activity上的列表。

我正在使用Intents将数据从一个Activity传递到另一个Activity,但我知道我在ClassB Activity中缺少一些关键内容,因为没有显示任何内容。

这是我的主要代码:

public class ClassA extends AppCompatActivity {

    EditText note;
    Button saveNoteB, goToNotesB;
    public final static String EXTRA_NOTE = "com.lisa.currys.userlistarray.note";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        saveNoteB = (Button) findViewById(R.id.saveNote);
        saveNoteB.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                    Intent i = new Intent(ClassA.this, ClassB.class);
                    note = (EditText) findViewById(R.id.note);
                    String userInput = note.getText().toString();

                    ArrayList<String> arr = new ArrayList<String>();
                    arr.add(userInput);

                    i.putStringArrayListExtra("note", arr);
                    startActivity(i);
            }
        });

和我的第二项活动:

public class ClassB extends AppCompatActivity {

public static android.widget.ListView displayNotes;
ArrayList<String> arr = new ArrayList<String>();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main2);

    arr = getIntent().getExtras().getStringArrayList(ClassA.EXTRA_NOTE);
    displayNotes = (ListView)findViewById(R.id.listView);
    Intent i = getIntent();
    arr = i.getStringArrayListExtra("note");

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(ClassB.this, android.R.layout.simple_list_item_1);
    displayNotes.setAdapter(adapter);
   }
}

欢迎任何指示或建议。

谢谢。

3 个答案:

答案 0 :(得分:1)

在ClassA中试试这个:

i.putStringArrayListExtra(EXTRA_NOTE, arr);

或在ClassB中试试这个:

arr = getIntent().getExtras().getStringArrayList("note");

您必须使用相同的键来设置和获取值。

顺便说一下,为什么要为&#34; arr&#34;分配值?两次?

答案 1 :(得分:1)

您永远不会将arr中的元素添加到ArrayAdapter。使用ArrayAdapter的三个参数构造函数,如下所示,它将添加元素:

ArrayAdapter<String> adapter = 
    new ArrayAdapter<String>(ClassB.this, android.R.layout.simple_list_item_1, arr);

答案 2 :(得分:0)

    Try this 

     ArrayAdapter<String> adapter = new ArrayAdapter<String>(ClassB.this, android.R.layout.simple_list_item_1);

     Above statement you are pass the context and layout in which your data
     display but you are not give the data which is store 
     in your **arr** arraylist so you not show anything.

  replace this statement to 

    ArrayAdapter<String> adapter = 
    new ArrayAdapter<String>(ClassB.this, android.R.layout.simple_list_item_1, arr);