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

클릭이벤트 질문이요 !!

0 추천

반복 실행을 위해 아래 예제 코드를 사용하였습니다

cdTimer = new CountDownTimer(3000, 1000) {
public void onTick(long millisUntilFinished) {
//이 부분에 반복적으로 실행해줄 코드를 넣어주면 된다
}
 public void onFinish() {
//이 부분은 3초가 지나고 끝낫을때 이부분이 실행되게 된다
}
};
cdTimer.start();

1초마다 텍스트뷰를 동적으로 만들기 위해 아래 예제 코드를 사용하였습니다

아래는 제가 참고한 예제이고 제가 구현한 코드는 배열입니다

topLL = (LinearLayout)findViewById(R.id.dynamicArea);
TextView topTV1 = new TextView(NowActivity.this);
topTV1.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
topTV1.setBackgroundColor(Color.parseColor("#00FFFFFF"));
topTV1.setPadding(20, 10, 10, 10);
topTV1.setTextColor(Color.parseColor("#FF7200"));
topTV1.setTextSize(13);
topTV1.setText("텍스트");
topLL.addView(topTV1);

1초마다 반복적으로 텍스트뷰가 생성되는것까지 하였는데 클릭이벤트가 안먹히는데 왜그런지 아시는분 조언좀 부탁드려요ㅜ ㅜ

카운트다운타이머에서는 클릭이벤트를 못쓰는건가요 ?

텍스트뷰를 클릭했을때 텍스트뷰를 없애고 싶은데 아무리 해도 안되네요 ..

보꼬 (1,630 포인트) 님이 2016년 1월 15일 질문

1개의 답변

0 추천
안될리가 없을것같은데..

클릭리스너 구현한소스는 어디있나요?

아니면 꼼수로 텍스뷰의 영역과 동일한 사이즈로 투명한 view나 버튼을 올리시고 거기에 클릭 리스너를 적용해보세요.
캬옹이 (37,920 포인트) 님이 2016년 1월 15일 답변
tv[i].setOnClickListener(MainActivity.this);

@Override
public void onClick(View v) {
    Toast toast = Toast.makeText(MainActivity.this, "클릭되었습니다", Toast.LENGTH_SHORT);
    toast.show();
}
이렇게 되어있어요 근데 안되요ㅜ ㅜ
아.. 텍스트뷰를 배열에다가 담은건가요?
배열에다가 담을 필요는 없는것 같구요,
view에다가 addview할때 topTV1에 onclick을 미리 쓰시면 됩니다.

LinearLayout llTest = (LinearLayout)findViewById(R.id.llTest);
       
        for(int i = 0; i < 5; i++)
        {
            TextView topTV1 = new TextView(MainActivity.this);
            topTV1.setTag(i);
            topTV1.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
            topTV1.setBackgroundColor(Color.parseColor("#00FFFFFF"));
            topTV1.setPadding(20, 10, 10, 10);
            topTV1.setTextColor(Color.parseColor("#FF7200"));
            topTV1.setTextSize(13);
            topTV1.setText(""+i);
           
            topTV1.setOnClickListener(new View.OnClickListener() {
               
                @Override
                public void onClick(View v) {
           
                    // TODO Auto-generated method stub
                    Toast.makeText(MainActivity.this, "" + v.getTag(), Toast.LENGTH_SHORT).show();
                }
            });
           
            llTest.addView(topTV1);
        }

요런식으로 한번해보세요 태그값을 이용해서 값전달까지 할수있습니다.
아.. implements를 사용해서 하셨군요;
그렇게 해도 상관은 없지만 작업이 조금 복잡해집니다.
인터페이스를 사용해서 onClick을 구현하신다면 제가 예제로 올려놓은 그대로 setTag를 해서
태그값을 매칭시키고 클릭리스너를 topTv1.setOnClickListener(this)로 하시고,
onClick에서 꺼내쓸때 switch던 if던 v.getTag해서 설정한 태그값을 가지고 어떤 버튼이 눌려졌는지 판단하고 그에따라 구현하시면 될것 같습니다.
...