해외축구 앱을 만들 때도 그렇고

1TO50게임 앱을 만들 때도 Gridview를 사용하면서

계속 onItemClick이벤트을 구현하고자 노력했으나

사실 몇일째 그 문제가 해결되지 않았다.

그래서 해외축구앱에서는

button에 click이벤트로 이것을 해결했으나

이번에는 이 문제를 해결해보고자

붙잡고 늘어져봤다.

한주내내 이렇게 저렇게 해본 결과 알게 되었다.

gridview에 각 sel에는 click이벤트가 있는 위젯을 사용하면 안되는 거였다.

ImageButton위젯이 아니라

ImageView위젯을 사용해야하는 거였다.

이전소스

ImageButton btn1 = (ImageButton) view.findViewById(R.id.imgbtn1);
    btn1.setBackgroundColor(Color.WHITE);
    btn1.setLayoutParams(new GridView.LayoutParams(ImageOneActivity.mwidth, ImageOneActivity.mwidth));
    btn1.setImageResource((R.drawable.btn01 +position));
    if(btn1 != null){
    System.out.println("position:["+ position+ "],btn1:["+btn1 +"]");
    btn1.setOnClickListener(clickListener);
}

제대로 구동되는 소스

 ImageView btn1 = (ImageView) view.findViewById(R.id.imgbtn1);
    btn1.setBackgroundColor(Color.WHITE);
    btn1.setLayoutParams(new GridView.LayoutParams(ImageOneActivity.mwidth, ImageOneActivity.mwidth));
    btn1.setImageResource((R.drawable.btn01 +position));
 
 
   gridview.setOnItemClickListener(new OnItemClickListener() {
     public void onItemClick(AdapterView<?> parent, View v,
       int position, long id) {
      
      Toast.makeText(getApplicationContext(),""+position, Toast.LENGTH_SHORT).show();
  }
 }); 

이런 문제는 나만 몰랐던 걸까?
왠만한 검색으로 나오지 않아 한참 고생했다.
역시 좌충우돌이다.
전체 소스

 

Image_1_50(20130308).zip

+ Recent posts