ArrayList只获取最后一项

时间:2017-04-05 04:54:02

标签: java 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 个答案:

答案 0 :(得分:1)

每次单击数组初始化并且所有先前的数据都将丢失时,您应该将ArrayList的初始化移出onclick侦听器。

答案 1 :(得分: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);


                        }