마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

hashmap 넣고 빼서 arrayList에 넣었는데 아무런값이 안나옵니다...

0 추천

참고하여 소스 수정해보았는데...잘안되네요.... 머리 쥐어뜯구 잇네요 ㅠㅠ 

Food1_List_Adapter에서 hashmap에 체크 할때와 수량 입력할 때 저장하게끔 해놓고,

food1에서 불러와서 key값 돌리면서 arrayList에 저장하여 인텐트로 Pay로 보내는데

거의 된거 같은데... Pay에 아무런 값이 안나오네요.... 머가 문제인지 좀 알려주시면 감사하겠습니다...

미니님 죄송해요... 다 가르쳐주셨는데.. 제가 제대로 해결을 못하네요 ㅠ 

public class JOrder implements Serializable{
 
    String menu;
    int amount;
    int price;
     
    boolean choice = false;
     
    public String getMenu() {
        return menu;
    }
    public void setMenu(String menu) {
        this.menu = menu;
    }
     
    public int getAmount() {
        return amount;
    }
    public void setAmount(int amount) {
        this.amount = amount;
    }
    public int getPrice() {
        return price;
    }
    public void setPrice(int price) {
        this.price = price;
    }
     
    public boolean isChoice() {
        return choice;
    }
    public void setChoice(boolean choice) {
        this.choice = choice;
    }
 
}
 
-----------------------------------------Food1_ListAdapter------------------------------
public class Food1_ListAdapter extends BaseAdapter {
 
    Activity context;
    ArrayList<JOrder> arrList;
    HashMap<String,JOrder> map = new HashMap<String, JOrder>();
    JOrder jOrder;
    int layout;
 
    public Food1_ListAdapter(Activity context, ArrayList<JOrder> arrList,
            int layout) {
        this.context = context;
        this.arrList = arrList;
        this.layout = layout;
    }
 
    public int getCount() {
        // TODO Auto-generated method stub
        return arrList.size();
    }
 
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return arrList.get(position);
    }
 
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return position;
    }
 
    public View getView(final int position, View convertView, ViewGroup parent) {
        View v = null;
        if (convertView == null) {
            v = context.getLayoutInflater().inflate(layout, null);
        } else {
            v = convertView;
        }
 
        TextView food1_list_menu = (TextView) v
                .findViewById(R.id.food1_list_menu);
        final EditText food1_list_amount = (EditText) v
                .findViewById(R.id.food1_list_amount);
        TextView food1_list_price = (TextView) v
                .findViewById(R.id.food1_list_price);
        final CheckBox food1_list_choice = (CheckBox) v
                .findViewById(R.id.food1_list_choice);
 
        jOrder = arrList.get(position);
         
        food1_list_choice
                .setOnCheckedChangeListener(new OnCheckedChangeListener() {
 
                    public void onCheckedChanged(CompoundButton buttonView,
                            boolean isChecked) {
                         
                        if (food1_list_choice.isChecked()) {
 
                            map.put(jOrder.getMenu(), jOrder);
                             
                            Toast.makeText(context, "체크되었습니다",
                                    Toast.LENGTH_SHORT).show();
                        } else {                   
//                          jOrder.setChoice(false);
                             
                            map.remove(jOrder.getMenu());
                             
                            Toast.makeText(context, "체크가 해제되었습니다.",
                                    Toast.LENGTH_SHORT).show();
                        }
 
                    }
                });
         
        food1_list_amount.addTextChangedListener(new TextWatcher() {
             
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                if(food1_list_choice.isChecked()){
//                  jOrder.setAmount(Integer.parseInt(food1_list_amount.getText().toString()));
                     
                    map.put(jOrder.getMenu(),jOrder);
                     
//              Object jorder = map.keySet().toArray();
                     
//                  arrList.add(jOrder);
                     
                }
                else if(Integer.parseInt(food1_list_amount.getText().toString()) == 0 || food1_list_amount.getText().toString() == null || food1_list_choice.isChecked() == false){
                    map.remove(jOrder.getMenu());
                }
                 
            }
             
            public void beforeTextChanged(CharSequence s, int start, int count,
                    int after) {
                 
                 
            }
             
            public void afterTextChanged(Editable s) {
                  
                                 
            }
        });
         
        jOrder = arrList.get(position);
 
        food1_list_menu.setText(jOrder.getMenu());
//      food1_list_amount.setText("");
        food1_list_price.setText("" + jOrder.getPrice());
 
        return v;
    }
 
}
 
-----------------------------------------Food1 -------------------------------------------
public class Food1 extends Activity implements OnClickListener {
 
    Button order_btn;
    ArrayList<JOrder> jOrder_lit;
    ListView food1_list;
    JOrder jorder = new JOrder();
    String test = "";
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.food1);
 
        food1_list = (ListView) findViewById(R.id.food1_list);
 
        onFood1List();
 
        order_btn = (Button) findViewById(R.id.order_food1_btn);
 
        order_btn.setOnClickListener(this);
 
    }
 
    public void onClick(View v) {
 
        if (v.getId() == R.id.order_food1_btn) {
             
            Food1_ListAdapter food1 = new Food1_ListAdapter(getParent(),
                    jOrder_lit, R.id.food1_list);
             
            ArrayList<JOrder> jOrder_lit2 = new ArrayList<JOrder>();
             
            HashMap<String, JOrder> map = new HashMap<String, JOrder>();
             
            JOrder jOrder;
             
            Object jorder = map.keySet().toArray();
            for (int cnt = 0; cnt < food1.map.keySet().size(); cnt++) {
                jorder = food1.map.get(cnt);
             
                    jOrder_lit2.add((JOrder)jorder);
            }
 
                Intent order_intent = new Intent(this, Pay.class);
                order_intent.putExtra("order_list", jOrder_lit2);
                startActivity(order_intent);
            }
        }
 
    private void onFood1List() {
        ServerRequest request = new ServerRequest();
 
        Map<String, String> map = new HashMap<String, String>();
        request.Order_List(map, handler, 100);
    }
 
    Handler handler = new Handler() {
 
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
 
            if (msg.what == 100) {
                jOrder_lit = (ArrayList<JOrder>) msg.obj;
 
                food1_list.setAdapter(new Food1_ListAdapter(Food1.this,
                        jOrder_lit, R.layout.food1_layout));
 
                food1_list.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
 
            } else {
                Toast.makeText(getApplicationContext(), "fail",
                        Toast.LENGTH_SHORT).show();
            }
        }
    };
 
}
public class Pay extends Activity implements OnClickListener{
    Button pay_btn;
    ListView pay_list;
    ArrayList<JOrder> jOrder_List;
    String tag;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.pay);
 
        pay_list = (ListView) findViewById(R.id.pay_list);
         
        onPayList();
         
        pay_btn = (Button)findViewById(R.id.pay_btn_go);
         
        pay_btn.setOnClickListener(this);
    }
     
    private void onPayList() {
        Intent intent = getIntent();
        jOrder_List =(ArrayList<JOrder>) intent.getSerializableExtra("order_list");
         
        pay_list.setAdapter(new Pay_ListAdapter(Pay.this,
                jOrder_List, R.layout.pay_layout));
    }
 
    public void onClick(View v) { 
        Intent pay_intent = new Intent(this, Pay_result.class);
                    startActivity(pay_intent); 
            }
        }
    

 

곰돌이12 (370 포인트) 님이 2015년 11월 27일 질문
곰돌이12님이 2015년 11월 30일 수정

1개의 답변

+1 추천
 
채택된 답변

받는쪽 코드도 넣어주셔야 알것같은데...

로 받으셔야되는데 .. 질문좀...

1. 아래 코드에서는 제대로 체크된 값과 수량이 들어갔나요???

Intent order_intent = new Intent(this, Pay.class);

                order_intent.putExtra("order_list", jOrder_lit2);

                startActivity(order_intent);

2. 받는쪽에서 아래 코드와 같이 받으신게 맞는지..?

ArrayList<JOrder> list = (ArrayList<JOrder>) getIntent().getSerializableExtra("order_list"); 

라쎄린드 (25,460 포인트) 님이 2015년 11월 29일 답변
곰돌이12님이 2015년 11월 30일 채택됨
로그찍어보니 put은 들어가는거같은데 Food1에서 널이 잡히는거같구요...
여기 이 포문이 돌지를 않네요...
for (int cnt = 0; cnt < food1.map.keySet().size(); cnt++) {
                jorder = food1.map.get(cnt);
             
                    jOrder_lit2.add((JOrder)jorder);
            }
아니면 혹시 put이 이상하게 되서 key에서 못찾아서 포문이 안도는건지....
정확히 어느 부분이 안되는지는 직접 찍어 보셔야죠...ㅎㅎ
지금 회사라서.. 이따가 집에가서 다시 정확하게 로그 찍어본 뒤에 혹시 잘 안되면 말씀드리겠습니다. ㅎ 매 번 번거로운데 친절히 잘 알려주셔서 감사합니다.
많은 도움이 되고 있어요 ㅎㅎ
일단 보내는쪽 부분이  null값이 잡히니 중점적으로 봐야 할거같아요
Food1 리스트어댑터에서는체크해서 put하면 값이 들어가고,  체크해제시 remove하면 널로 잘 떨어집니다.
근데 키셋에 값이 안들어가있네요..
키셋이 값이 없어서 포문이 돌지않구요 ㅠㅠ
리스트어댑터에서 put하고 food1에서 바로 쓰면 안되는건가요?...
...