안드로이드 개발 질문/답변
(글 수 45,052)
public View getView(int position, View convertView, ViewGroup parent)
{
.
.
.
생략
.
.
//버튼
m_btnCk = v.findViewById(R.id.SHARE_BOX_DELETE_BTN_LIST_CK);
m_btnCk.setTag(position); //tag 를 position으로 줌.
m_btnCk.setOnClickListener(m_onLvItemClickListener);
return v;
}
private OnClickListener m_onLvItemClickListener = new OnClickListener() {
public void onClick(View v) {
Log.i("m_btnCk .getTag() : "+m_btnCk .getTag());
Log.i("v .getTag() : "+v.getTag());
// 두개가 상이하게 나옴.
switch(v.getId()){
case R.id.SHARE_BOX_DELETE_BTN_LIST_CK:
if(v.getTag() == m_btnCk.getTag()) {
생략
}
};
이렇게 해서 굵게 표시된 부분에서 로그를 찍어보면
총 10개의 listView 데이터가 있을때 첫번째 listView 아이템을 선택했을때
버튼의 getTag()는 5 가 나오고
v.getTag()는 0이 나옵니다.
두개의 tag가 맞지가 않습니다.
두개의 tag가 일치하게 할 수 있는 방법이 없을까요?
if(v.getTag() == m_btnCk.getTag()) {
생략
}
이조건문안에도 당연히 들어오지않습니다.
ListView가 많은양의 데이터를 빠르게 그리기 위해
5개나 몇개씩 묶어서 view를 그린다고 들었는데 그때문인지..
{
.
.
.
생략
.
.
//버튼
m_btnCk = v.findViewById(R.id.SHARE_BOX_DELETE_BTN_LIST_CK);
m_btnCk.setTag(position); //tag 를 position으로 줌.
m_btnCk.setOnClickListener(m_onLvItemClickListener);
return v;
}
private OnClickListener m_onLvItemClickListener = new OnClickListener() {
public void onClick(View v) {
Log.i("m_btnCk .getTag() : "+m_btnCk .getTag());
Log.i("v .getTag() : "+v.getTag());
// 두개가 상이하게 나옴.
switch(v.getId()){
case R.id.SHARE_BOX_DELETE_BTN_LIST_CK:
if(v.getTag() == m_btnCk.getTag()) {
생략
}
};
이렇게 해서 굵게 표시된 부분에서 로그를 찍어보면
총 10개의 listView 데이터가 있을때 첫번째 listView 아이템을 선택했을때
버튼의 getTag()는 5 가 나오고
v.getTag()는 0이 나옵니다.
두개의 tag가 맞지가 않습니다.
두개의 tag가 일치하게 할 수 있는 방법이 없을까요?
if(v.getTag() == m_btnCk.getTag()) {
생략
}
이조건문안에도 당연히 들어오지않습니다.
ListView가 많은양의 데이터를 빠르게 그리기 위해
5개나 몇개씩 묶어서 view를 그린다고 들었는데 그때문인지..
m_btnCk는 맴버변수 인가요?
만약 그렇다면 getView 지나갈때마다 m_btnCK는 바뀔건데요...
'클릭이벤트를 받은 버튼' v와 '마지막으로 그려진 버튼' m_btnCk는 같지 않습니다.
만약 클릭한 버튼의 position값을 처리하고 싶으면 v.getTag() 값을 통해 처리하시면 됩니다.