2016-07-25 8 views
0

私はputStringArrayListExtraで文字列配列を送るアプリケーションを開発しています。私が受け取っている第二の活動で。問題は、2つのアイテムを送信すると、2つのアクティビティが開きます。 2番目の要素はリストビュー(1つだけ表示)にあります。これをクリックすると、最初の項目が表示されます。私は、同じリストビューに2つのアイテムが必要です。私は間違って何をしていますか?あまりにも多くのアクティビティを開始する配列要素

まず活動

final int len = thumbnailsselection.length; 
      int cnt = 0; 
      String selectImages = ""; 
      // String result = ""; 
      String ar=""; 


      for (int i =0; i<len; i++) 
      { 
       if (thumbnailsselection[i]) 
       { 
        cnt++; 
        ar = nev[i]; 
        selectImages = nev[i] + "|"; 
        // List<String> myList = new ArrayList<String>(Arrays.asList(selectImages)); 
        ArrayList<String> arr = new ArrayList<String>(); 
        arr.add(selectImages); 

        Intent intent = new Intent(Gallery.this,Upload.class); 
        intent.putStringArrayListExtra("array_list", arr); 

        startActivity(intent); 

        // Log.i("adat","galleri:" + arr); 





       } 

      } 
      if (cnt == 0){ 
       Toast.makeText(getApplicationContext(), 
         "Please select at least one image", 
         Toast.LENGTH_LONG).show(); 
      } else { 





       Toast.makeText(getApplicationContext(), 
         "You've selected Total " + cnt + " image(s).", 
         Toast.LENGTH_LONG).show(); 

      } 
     } 
    }); 

セカンド活動

ListView listView; 

ArrayAdapter<String> adapter; 



@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_upload); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 

    listView = (ListView) findViewById(R.id.list); 

    Bundle b = getIntent().getExtras(); 


     // ArrayList<String> arr = (ArrayList<String>)b.getStringArrayList("array_list"); 
    ArrayList<String> arr = b.getStringArrayList("array_list"); 
     Log.i("adat","UPLOAD:"+arr); 


    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, android.R.id.text1, arr); 
    listView.setAdapter(adapter); 

    } 
+1

Arraylist宣言をforループの外側に配置します。また、インテントを初期化し、forループの後にstartActivity()を呼び出します。 – sJy

+0

forループの外側に 'data passing logic'を挿入しようとしました –

答えて

3

あなたは正しい値を取得されていませんなぜループがthatsのときに新しいArrayListを毎回作成している間、以下のように実行します。

また、ループの外側にもあなたを連れて行きます。

ArrayList<String> arr = new ArrayList<String>(); 
for (int i =0; i<len; i++){ 
    if (thumbnailsselection[i]){ 
     cnt++; 
     ar = nev[i]; 
     selectImages = nev[i] + "|";    
     arr.add(selectImages); 
    } 
} 

Intent intent = new Intent(Gallery.this,Upload.class); 
intent.putStringArrayListExtra("array_list", arr); 
startActivity(intent); 
+1

これは問題を解決しません。 startActivityはforループの外側にある必要があります。 – sJy

+1

@sJyあなたは私の答えを更新しました。 –

+0

ありがとうございます。これは機能します。しかし、私が戻ってクリックすると、3つのアイテムがある場合、最初にアクティビティに戻りますが、2番目のエレメントで同じアクティビティに戻ります。もう一度、戻るボタンをクリックすると、リストの最初の要素が表示されます。 – Janos