push할때마다 음식의 이름과 음식의 가격을 editText를 이용해서 버튼에 추가하게 됩니다. 그런데 버튼을 누를때마다 가격 즉 prc 값을 위에다 추가 해주고 싶은데 prc 값이 다른 버튼을 추가해줄때마다 변경되어서 계속 똑같은 값이 나옵니다(str=돼지고기 prc=18000 을추가해주면 음식:돼지고기 가격:18000버튼이 생성 됩니다. 그리고 버튼을 누르면 음식 가격 : 18000이라고 뜸니다. 그리고 str=닭고기 prc=9000 원을 push 버튼을 눌러서 또 추가해준후 첫번째 버튼을 누르면 위쪽에 가격이 18000이라고 뜨지않고 9000원이라고 뜹니다 어떡해 해야할까요?
public class food2main extends Activity implements OnClickListener {
private final int DYNAMIC_VIEW_ID = 0x8000;
private final int MAX_DYNAMIC_VIEW = 8;
private Button pushButton;
private Button popButton;
private TextView statusText;
private TextView infoText;
private GridLayout dynamicLayout;
private int numButton = 0;
LayoutInflater inflater;
final static int DIALOG_1 = 0;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.food2main);
//버튼에디ㅡㅌ
inflater = (LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);
//버튼추가
pushButton = (Button)findViewById(R.id.pushButton);
popButton = (Button)findViewById(R.id.popButton);
statusText = (TextView)findViewById(R.id.statusText);
infoText = (TextView)findViewById(R.id.infoText);
pushButton.setOnClickListener(this);
popButton.setOnClickListener(this);
setStatusText(0);
setInfoText(DYNAMIC_VIEW_ID);
dynamicLayout = (GridLayout) findViewById(R.id.dynamicArea);
}
@Override
//버튼선언
public void onClick(View v) {
int id = v.getId();
if ( id == R.id.pushButton ) {
pushButton();
showDialog(DIALOG_1);
}
else if ( id == R.id.popButton ) {
popButton();
}
else if ( ( id > DYNAMIC_VIEW_ID ) && ( id <= DYNAMIC_VIEW_ID + MAX_DYNAMIC_VIEW ) ) {
setInfoText(prc);
}
}
//버튼 개수
private void setStatusText(int num) {
statusText.setText(getString(R.string.status_msg) + " " + num);
}
private void setInfoText(int id) {
if ( id == DYNAMIC_VIEW_ID ) {
infoText.setText(getString(R.string.info_msg) + " " + getString(R.string.null_msg));
}
else
{
infoText.setText(getString(R.string.info_msg) + " " + prc);
}
}
//버튼 메뉴추가
String str;
int prc;
public Dialog onCreateDialog(int id) {
switch (id) {
case DIALOG_1:
final LinearLayout linear = (LinearLayout)inflater.inflate(R.layout.foodmenue, null);
return new AlertDialog.Builder(food2main.this)
.setTitle("메뉴추가")
.setView(linear)
.setPositiveButton("확인", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
EditText editname = (EditText)linear.findViewById(R.id.editname);
EditText price = (EditText)linear.findViewById(R.id.price);
str = editname.getText().toString();
prc = Integer.parseInt(price.getText().toString());
}
})
.setNegativeButton("취소", null)
.create();
}
return null;
}
//부튼 추가
public void pushButton() {
if ( numButton >= MAX_DYNAMIC_VIEW ) {
return;
}
setStatusText(++numButton);
Button dynamicButton = new Button(this);
dynamicButton.setId(DYNAMIC_VIEW_ID + numButton);
dynamicButton.setText("음식:"+str+"\n"+"가격:" + prc);
dynamicButton.setOnClickListener(this);
dynamicLayout.addView(dynamicButton, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
}
//버튼 삭제
private void popButton() {
if ( numButton <= 0 ) {
return;
}
Button dynamicButton = (Button)findViewById(DYNAMIC_VIEW_ID + numButton);
dynamicLayout.removeView(dynamicButton);
setStatusText(--numButton);
}
}