2017-04-05 18 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を作成することができます。 チェックし、それがnullであるし、それをインスタンス化した場合:

@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

あなたは配列が初期化され、以前のすべてのデータが失われますクリックするたびとしてのonclickリスナーの外のArrayListの初期化を移動する必要があります。

関連する問題