2016-07-25 65 views
0

我正在開發一個應用程序,它發送一個字符串數組與putStringArrayListExtra。在接受第二項活動時。問題是,如果我發送2個項目,則2個活動將打開。第二個元素是在列表視圖(僅顯示一個),當我點擊時,現在有第一個項目。我想要在同一個列表視圖中的2個項目。我究竟做錯了什麼?Arraylist元素開始太多活動

第一項活動

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循環之外 –

回答

3

不喜歡之下,而你正在創造新的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個項目,它不會首先讓我回到活動,但是對於同一活動,使用第二個元素,我再次單擊後退按鈕,然後列表中的第一個元素。 – Janos