위의 코드는 리스트 아이템의 버튼을 클릭했을 때 이벤트 처리하는 코드로는 좀 잘못된 것 처럼 보입니다.
gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> adapterView, View view, int i, long I) {
final View color = view;
final int pos = i;
list.remove(pos);
list.add(pos, "2");
color.setBackgroundColor(Color.GREEN);
notifyDataSetChanged();
}
...
이렇게 하던가 아니면
아답터 의 getView에서 리스트 아이템 뷰를 생성한 다음 button을 찾아서 setOnClickListener를 설정해야 할 것 같은데요
final Button button =(Button) rowView.findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v)
{
list.remove(pos);
list.add(pos, "2");
color.setBackgroundColor(Color.GREEN);
notifyDataSetChanged();
}
});
일단 onClick이나 onItemClick이 제대로 호출되는지 로그를 넣어서 확인해 보세요
Log.d("test","onClick");
리스트 아이템에 이벤트가 전달되지 않아서 버튼이 클릭이 되지 않는 경우도 있어요.
이경우에는
- ListView 는 android:focusable="true" 로 설정하고
- Button은 android:focusable="false"로 설정해 보세요