Adapter를 아래 처럼 바꾼다.

가장 중요한 것은 View.setFocusable(false);와

ImageButton -> ImageView, Button -> TextView라는 것이다.

버튼을 뷰로 바꿔도 클릭이 정상적으로 먹힌다.

클릭만 먹히면 되니 이런 식으로 하는 것이 좋다. // 버튼으로 할 경우 OnClickListener()이 안 먹힘.


예시 코드 :


// getView

@Override


public View getView(int position, View convertView, ViewGroup parent) {

View v = convertView;

if (v == null) {
holder = new ViewHolder();
v = mInflater.inflate(R.layout.list_contacts, null);
holder.mainName = (TextView) v.findViewById(R.id.tv_main_name);
holder.mainFavoritesSwitch = (ImageView) v.findViewById(R.id.iv_main_favorits_switch);
holder.mainCall = (ImageView) v.findViewById(R.id.iv_main_call);
holder.mainMan = (ImageView) v.findViewById(R.id.iv_main_man);
holder.mainName.setFocusable(false);
holder.mainFavoritesSwitch.setFocusable(false);
holder.mainCall.setFocusable(false);
holder.mainMan.setFocusable(false);

v.setTag(holder);
} else {
holder = (ViewHolder) v.getTag();
}

//InfoClass를 생성하여 각 뷰의 포지션에 맞는 데이터를 가져옴
InfoClass info = InfoArr.get(position);

//리스트뷰의 아이템에 맞는 String값을 입력
holder.mainName.setText(info.name);

return v;
}



//ViewHolder

private class ViewHolder {

TextView mainName;

ImageView mainFavoritesSwitch;

ImageView mainCall;

ImageView mainMan;

} 


안드로이드 자체 버그로 보인다.

다른 해결책이 있을 수도 있다.

ImageButton이든 ImageView든 클릭만 먹히면 되니 이렇게 해도 무방하다고 본다.

+ Recent posts