


메뉴에서 추가하면 오른쪽 주문내역의 탭에 메뉴가 추가되고
주문내역 탭에서 오른쪽의 X버튼을 누르면 해당 아이템이 삭제되는 코드입니다
그런데 불고기 11개를 삭제하면 불고기는 삭제되지만 개수는 마지막 item의 것이 삭제되네요;;
어떻게 해결해야 하나요 ㅠㅠ?
mainActivity 입니다
public class OrderActivity extends Activity {
ExpandableListView listView_menu;
ArrayList<String> array_menuType = new ArrayList<String>();
HashMap<String, ArrayList<String>> array_menuName = new HashMap<String, ArrayList<String>>();
ListView listView_order;
ArrayList<String> array_order = new ArrayList<String>();
OrderListAdapter adapter_order;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_order);
OnClickListener clickListener;
TabHost tabHost = (TabHost)findViewById(android.R.id.tabhost);
tabHost.setup();
TabSpec menuTab = tabHost.newTabSpec("Tab1");
menuTab.setContent(R.id.tab1);
menuTab.setIndicator("메뉴");
tabHost.addTab(menuTab);
TabSpec orderTab = tabHost.newTabSpec("Tab2");
orderTab.setContent(R.id.tab2);
orderTab.setIndicator("주문내역");
tabHost.addTab(orderTab);
listView_order = (ListView) findViewById(R.id.listview_order);
adapter_order = new OrderListAdapter(this, array_order);
listView_order.setAdapter(adapter_order);
setArrayData();
listView_menu = (ExpandableListView) findViewById(R.id.listview_menu);
listView_menu.setAdapter(new MenuListAdapter(this, array_menuType, array_menuName, array_order, adapter_order));
}
private void setArrayData() {
array_menuType.add("피자");
array_menuType.add("치킨");
array_menuType.add("중국집");
ArrayList<String> arrayPizza = new ArrayList<String>();
arrayPizza.add("치즈");
arrayPizza.add("불고기");
array_menuName.put(array_menuType.get(0), arrayPizza);
array_menuName.put(array_menuType.get(1), arrayPizza);
}
}
메뉴의 리스트 어뎁터 입니다
public class MenuListAdapter extends BaseExpandableListAdapter{
private Context context;
private ArrayList<String> arrayGroup;
private HashMap<String, ArrayList<String>> arrayChild;
private ArrayList<String> array_order;
OrderListAdapter orderListAdapter;
public MenuListAdapter(Context context, ArrayList<String> arrayGroup, HashMap<String, ArrayList<String>> arrayChild,
ArrayList<String> array_order, OrderListAdapter orderListAdapter) {
super();
this.context = context;
this.arrayGroup = arrayGroup;
this.arrayChild = arrayChild;
this.array_order = array_order;
this.orderListAdapter = orderListAdapter;
}
@Override
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
String groupName = arrayGroup.get(groupPosition);
if(convertView == null) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = (RelativeLayout)inflater.inflate(R.layout.item_menutype, null);
}
TextView textGroup = (TextView) convertView.findViewById(R.id.text_menutype);
textGroup.setText(groupName);
return convertView;
}
@Override
public View getChildView(int groupPosition, int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
final String childName = arrayChild.get(arrayGroup.get(groupPosition)).get(childPosition);
if(convertView == null) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = (RelativeLayout) inflater.inflate(R.layout.item_menuname, null);
}
TextView textChild = (TextView) convertView.findViewById(R.id.text_menuname);
textChild.setText(childName);
Button orderButton = (Button) convertView.findViewById(R.id.button_order);
orderButton.setText("추가");
orderButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
array_order.add(childName);
orderListAdapter.notifyDataSetChanged();
}
});
return convertView;
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
// TODO Auto-generated method stub
return false;
}
}
주문내역의 리스트 어뎁터입니다.
public class OrderListAdapter extends BaseAdapter{
private Context context;
private ArrayList<String> arrayList;
ListViewHolder holder;
public OrderListAdapter(Context context, ArrayList<String> arrayList) {
super();
this.context = context;
this.arrayList = arrayList;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View v = convertView;
String str_menuname = arrayList.get(position);
final int temp = position;
if(v == null) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = (RelativeLayout)inflater.inflate(R.layout.item_order, null);
holder = new ListViewHolder(v);
v.setTag(holder);
} else {
holder = (ListViewHolder) v.getTag();
}
holder.getText_menuName().setText(str_menuname);
final EditText edit_quantity = holder.getEdit_quantity();
holder.getButton_plus().setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
int temp = Integer.parseInt(edit_quantity.getText().toString());
edit_quantity.setText(Integer.toString(temp + 1));
}
});
holder.getButton_minus().setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
int temp = Integer.parseInt(edit_quantity.getText().toString());
edit_quantity.setText(Integer.toString(temp - 1));
}
});
holder.getButton_remove().setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
arrayList.remove(temp);
notifyDataSetChanged();
}
});
return v;
}
private class ListViewHolder {
private View v;
private TextView text_menuname;
private EditText edit_quantity;
private Button button_plus;
private Button button_minus;
private Button button_remove;
ListViewHolder(View v) {
this.v = v;
}
TextView getText_menuName() {
if(text_menuname == null) {
text_menuname = (TextView) v.findViewById(R.id.text_order_menuname);
}
return text_menuname;
}
EditText getEdit_quantity() {
if(edit_quantity == null) {
edit_quantity = (EditText) v.findViewById(R.id.edit_quantity);
}
return edit_quantity;
}
Button getButton_plus() {
if(button_plus == null) {
button_plus = (Button) v.findViewById(R.id.button_plus);
}
return button_plus;
}
Button getButton_minus() {
if(button_minus == null) {
button_minus = (Button) v.findViewById(R.id.button_minus);
}
return button_minus;
}
Button getButton_remove() {
if(button_remove == null) {
button_remove = (Button) v.findViewById(R.id.button_remove);
}
return button_remove;
}
}
}