안드로이드 개발 질문/답변
(글 수 45,052)
게임 어플(짝 맞추기 게임) 공부할겸 만드는 중에..
다름이 아니라 그리드 화면 갱신문제 때문에 질문 드립니다..
■□■□□
□□□□□
□□□□□
□□□□□
검은색 네모칸을 둘다 선택했을 때
두 카드가 다르면 카드 뒷배경으로 되돌려 나와야 하는데..
두번째 선택한 화면은 뒷배경으로 돌아오지만 처음에 선택했던 카드는 되돌아 오지 않는 문제 입니다..
빨간색으로 표시한부분이 카드 뒷배경인데
어디서 처리해야할지 모르겠네요..
grid뷰에서 처리해야하나요??;;ㅠㅠ
허접한 소스이지만 많은 도움 부탁드립니다..
다름이 아니라 그리드 화면 갱신문제 때문에 질문 드립니다..
■□■□□
□□□□□
□□□□□
□□□□□
검은색 네모칸을 둘다 선택했을 때
두 카드가 다르면 카드 뒷배경으로 되돌려 나와야 하는데..
두번째 선택한 화면은 뒷배경으로 돌아오지만 처음에 선택했던 카드는 되돌아 오지 않는 문제 입니다..
빨간색으로 표시한부분이 카드 뒷배경인데
어디서 처리해야할지 모르겠네요..
grid뷰에서 처리해야하나요??;;ㅠㅠ
허접한 소스이지만 많은 도움 부탁드립니다..
grid.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, final int position, long id) {
final ImageView imageView = (ImageView)view;
Cnt++;
if((anicard[position].imgani == anicard[20].imgani) && Cnt == 2)
{
imageView.setImageResource(anicard[position].imgani);
Cnt=0;
anicard[20].imgani = 0;
}
else if( Cnt == 2)
{
imageView.setImageResource(anicard[position].imgani);
new CountDownTimer(10 * 1000, 1000) {
public void onTick(long millisUntilFinished) {
time++;
if (time == 3) {
imageView.setImageResource(R.drawable.cardback);
cancel();
time=0;
}
}
public void onFinish() {
}
}.start();//timer
Cnt =0;
}
else
{
imageView.setImageResource(anicard[position].imgani);
anicard[20].imgani = anicard[position].imgani;
BufImg = position;
}
} //onItemClick
});// setOnItemClickListener




기본적으로 어댑터 뷰를 다루실때는 뷰에서 직접 뭔가 하시기 보다는
뷰를 다루는 것은 어댑터의 getView에게 맡기시고,
데이터의 상태만 바꿔주는게 좋습니다.
예를 들면 anicard[position].imgani = aaaaa;
그런다음에 적용은 adapter.notifyDataSetChanged(); 하시면 getView가 다시 호출되면서 새로 적용하게 됩니다.
물론 getView에는
imageView.setImageResource(anicard[position].imgani);
이런 문장이 반드시 실행되어야 하겠죠.