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

안드로이드 동적버튼생성시 클릭하여 색상 변경

0 추천
   Response.Listener<String> responseListener = new Response.Listener<String>() {

            @Override
            public void onResponse(String response) {
                try {
                    JSONObject jsonObject = new JSONObject(response);
                    JSONArray jsonArray = jsonObject.getJSONArray("service");

                    for (int i = 0; i < jsonArray.length(); i++) {
                        JSONObject c = jsonArray.getJSONObject(i);
                        String name = c.getString("name");
                        if (!(name.equals("-"))) {
                            tvAge = new Button(getContext());
                                // TextView 생성
                                tvAge.setText(name);
                                tvAge.setGravity(Gravity.CENTER);
                                tvAge.setHeight(100);
                                tvAge.setWidth(200);
                                tvAge.setTextSize(18);
                                tvAge.setBackgroundColor(Color.rgb(245,245,245));
                                tvAge.setLayoutParams(params);                       
                                gl.addView(tvAge);

                            tvAge.setOnClickListener(new View.OnClickListener() {
                                @Override
                                public void onClick(View v) {
                                    num++;
                                    if(num % 2 == 0){
                                        tvAge.setBackgroundColor(Color.rgb(245,245,245));
                                    }else{
                                        tvAge.setBackgroundColor(Color.parseColor("#0000FF"));
                                    }
                                }
                            });

                        }
                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
        };
        ServiceRequest serviceRequest = new ServiceRequest(mb_id, responseListener);
        RequestQueue queue = Volley.newRequestQueue(getContext());
        queue.add(serviceRequest);

데이터베이스에서 volley통신으로 받아온 값들을 동적으로 생성하여 버튼을 만들었는데

눌러서 배경색을 변경할라고 하는데 어느 버튼을 눌러도 마지막 버튼색만 바뀌네요 ㅠㅠ,,,해결방법ㅇ이 있을까여? 각각 버튼에다가 적용을 시키고 싶습니다.

id를 부여하는 방법이 있나요? 부여하면 혹시 사용법을 알려주실수 있나여,,

한동욱 (410 포인트) 님이 2018년 7월 23일 질문

1개의 답변

0 추천
 
채택된 답변
텍스트뷰 객체를 전역으로 설정하셔서 그런것 같은데요.

 TextView tvAge = new Button(getContext()); 로 변경해보세요~!
idontknow (6,380 포인트) 님이 2018년 7월 23일 답변
한동욱님이 2018년 7월 24일 채택됨
원래 그걸로 되어있습니다 ㅠㅠ위에코드 중간에 있어요
읭 혹시  변수  선언부에 private Textview tvAge  이부분으로 되어있지않나요.  이걸지우시구 위에쓴것처럼 블록내에서 지역객체로 사용 하시믄 될거같은데요ㅠ
아 해결했습니다!!감사해요 ㅠㅠㅠㅠㅠ
...