안드로이드 개발 질문/답변
(글 수 45,052)
리스트뷰가 있습니다.
그 리스트뷰안에 이미지뷰 + 텍스트뷰의 아이템이 있습니다.
아이템을 클릭 시, 이미지뷰의 리소스 아이디(해당하는 이미지)를 통해 비트맵을 만듭니다.
그 비트맵을 사용자 정의 뷰의 onDraw()를 통해 그림을 그려줍니다.
그리고 그렸던 비트맵을 새로 만든 이미지뷰에 setImageBitmap()을 해준뒤,
이 이미지뷰에 터치 리스너를 등록합니다.
그런데 여기서 이 터치 리스너가 아예 작동하질 않네요 ㅜㅜㅜㅜ
잘 이해가 안가실것 같아서 중략된 코드 첨부하겠습니다!!!!
간단하니 꼭 좀 보시고 조언 해 주시면 감사하겠습니다. 선배님!
[code]
public class DrawActivity extends Activity {
........중략.....
public void onCreate(Bundle savedInstanceState) {
......중략......
list.setOnItemClickListener(itemClickListener);
.....중략....
}
AdapterView.OnItemClickListener itemClickListener = new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parentView, View view, int position, long id) {
//리스트뷰에 있는 아이콘의 아이디를 통해서 BitmapDrawable(드로우어블)객체 생성. BitmapDrawable drawable = (BitmapDrawable) getResources().getDrawable(data.get(position).getIcon());
Bitmap bitmap = drawable.getBitmap(); //드로우어블객체를 비트맵객체로.
bitmapImg = Bitmap.createBitmap(bitmap); //메모리에 그려줌.
clickFLAG = true;
Log.v(TAG, "onItemClick, clickFLAG : " + clickFLAG);
DrawView v = new DrawView(getBaseContext());
v = (DrawView) findViewById(R.id.drawView1);
v.invalidate(); //invalidate()로 다시 onDraw()해야할 필요가 있음.
//위의 메모리에 그려준 비트맵 이미지를 이미지뷰로 -> 터치 리스너 등록
ImageView img = new ImageView(getBaseContext());
img.setImageBitmap(bitmapImg);
img.setOnTouchListener(touchListener);
//이 부분에서 터치 리스너가 등록이 안되는지 터치 리스너가 작동되질 않습니다!!!!!!!!!!!!!!
}
};
......................중략...........
}
//사용자 정의 뷰입니다.
public class DrawView extends View {
...............중략.............
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Log.v(TAG, "onDraw메소드, clixkFLAG : " + kr.co.kywpcm.myflowerproject.DrawActivity.clickFLAG);
//클릭플래그가 true일 때만(리스트뷰의 아이템이 클릭 되었을 때만) 그려줌. if(kr.co.kywpcm.myflowerproject.DrawActivity.clickFLAG){ canvas.drawBitmap(kr.co.kywpcm.myflowerproject.DrawActivity.bitmapImg, 0, 0, paint);
}
}
...............중략............
}
[/code]
도와주시면 정말 감사하겠습니다.
안녕하세요. 잘부탁드립니다~
listview 의 item 이 포커스를 받고
item 에 새로운 view 를 만들고 거기에 이벤트를 주고자 하는 상황인듯 한데요
view 를 만들고 bitmap 을 set 하고 나서 listview 의 item 에 focusable 을 false 로 줘서
item 에 들어있는 view 들이 이벤트를 받게 해줘야 할듯 합니다.