这是我将项目传递给数组并尝试循环的方法,但为什么我只能获取数组中的最后一项?以下是我的代码,请提出建议,谢谢。
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++) {
}
});
答案 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);
}