2016-04-01 3 views
0

これは私の最初の質問ですので、簡単に私に行ってください:) 私はアンドロイドに新しいです、そして、私は単純なリストを作ろうとしています。最初のアクティビティでは、ユーザーはデータを入力できます。データは2番目のアクティビティのリストとして表示されます。ArrayListを別のアクティビティに渡しますが、結果は表示されませんか?

インテントを使用して1つのアクティビティから別のアクティビティにデータを渡していますが、何も表示されないため、私のClassBアクティビティに重要なものが欠けています。

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); 
    } 
} 

任意のポインタまたはアドバイスは最も歓迎されるであろう。

ありがとうございます。

答えて

1

実際にarrの要素をArrayAdapterに追加することはありません。 ARPを取り戻すため

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

うん、これは完全に動作します。私はarrを逃してしまったことに気付かなかった。おそらくそれをあまりにも長く見ています。 George Mulliganありがとうございました:) – Woowoo

1

にClassAでは、これを試してみてください。

i.putStringArrayListExtra(EXTRA_NOTE, arr); 

またはClassBの中

はこれを試してみてください。

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

あなたが値を設定し、取得するために同じ鍵を使用する必要があります。

ところで、なぜ「arr」に値を2回割り当てるのですか?

+0

ありがとう:それ以下の要素が追加されますようArrayAdapterための3つの引数のコンストラクタを使用します。ええ、あなたは正しいです。私は二度arrを宣言しました。私は複製されたものを取り出して、それを少しきれいにしました。私は上記の両方の方法を試みましたが、それは私にとってはうまくいかないようです。エラーはありませんが、それでも表示されません。以下の方法は仕事をしますが、もう一度ありがとうございます。 – Woowoo

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); 
関連する問題