2017-04-05 65 views
-3

這就是我將項目傳遞給數組並嘗試循環它的原因,但爲什麼我只能得到數組中的最後一項?以下是我的代碼,請告知,謝謝。ArrayList只能得到最後一個項目

final GridView condimentGrid = (GridView) promptsView.findViewById(R.id.condimentGrid); 
         CondimentList = getCondimentDescription(pCode); 
         condimentGrid.setAdapter(new condimentlist()); 

         condimentGrid.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
          @Override 
          public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
           condimentItem = ((Button)view.findViewById(R.id.condimentItem)).getText().toString(); 
           String CondimentStatus = ((TextView)view.findViewById(R.id.condimentStatus)).getText().toString(); 

           data = new ArrayList<String>(); 
           data.add(condimentItem); 


         } 
        }); 

        ok.setOnClickListener(new View.OnClickListener() { 
         @Override 
         public void onClick(View view) { 
          // array[] only get my last item that i Click 
          String array[] = data.toArray(new String[0]); 
          for (int j = 0; j < array.length; j++) { 

         } 
        }); 
+2

'data = new ArrayList ();'每次都會將列表覆蓋到一個新的空列表。 – 4castle

回答

0

因爲在每個項目上單擊您創建新的ArrayList data。 檢查它是否爲空,然後實例吧:

@Override 
          public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
           condimentItem = ((Button)view.findViewById(R.id.condimentItem)).getText().toString(); 
           String CondimentStatus = ((TextView)view.findViewById(R.id.condimentStatus)).getText().toString(); 

if(data==null) 
     data = new ArrayList<String>(); 
     data.add(condimentItem); 


         } 
1

你應該將ArrayList中的初始化出來的onclick監聽器每次單擊該數組初始化,所有以前的數據都將丟失的。

相關問題